Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
dbbook(2010.04.15).pdf
Скачиваний:
51
Добавлен:
09.06.2015
Размер:
2.14 Mб
Скачать

Базовое отношение может быть удалено с помощью оператора

drop table имя_базового_отношения

3.4. Индексы

Создание ключей (в развитых СУБД автоматически) связано с созданием индексов.

Простой или составной индекс для подсхемы из одного или нескольких атрибутов – это системная структура данных, в которой (по крайней мере, на логическом уровне) размещается упорядоченный перечень значений индекса со ссылками на те кортежи базового отношения, в которых эти значения встречаются.

Индексы могут быть уникальными и неуникальными, как показано в табл. 3.2 на примере паспортных данных (№ П – номер паспорта, Ф – фамилия).

 

 

 

Таблица 3.2.: Индексы

 

 

 

 

 

 

 

 

Паспортные данные

 

 

 

Индекс № П

 

 

 

Индекс Ф

 

 

 

 

 

 

 

№ П

 

Ф

 

...

 

 

 

№ П

 

 

 

 

Ф

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

300000

 

Петров

 

 

 

 

 

100000

 

2

 

 

 

null

 

2

 

2

100000

 

null

 

 

 

 

 

200000

 

4

 

 

 

Иванов

 

4

 

3

400000

 

Петров

 

 

 

 

 

300000

 

1

 

 

 

Петров

 

1, 3

 

4

200000

 

Иванов

 

 

 

 

 

400000

 

3

 

 

 

 

 

 

 

Здесь предполагается, что атрибут № П – первичный ключ. Поэтому индекс для него является уникальным. Индекс атрибута Ф является неуникальным.

Представим себе, что по заданному номеру паспорта требуется найти соответствующие паспортные данные (левая таблица, миллион записей). Последовательный просмотр записей этой таблицы может привести к миллиону сравнений. Но в данном случае имеется структура Индекс № П. В ней имеется упорядоченный список номеров паспортов с указанием на номера записей, содержащих соответствующие паспортные данные. Поэтому можно применить алгоритм дихотомического поиска заданного номера паспорта по упорядоченному списку номеров паспортов структуры Индекс № П, а затем, если запись найдена, по найденному из структуры номеру записи прямым доступом выбрать данные из паспортных данных. Такой дихотомический поиск значения индекса в миллионе кортежей будет реализован в СУБД за двадцать итераций:

106 = (103)2 (210)2 = 220

Индексы могут создаваться безотносительно к ключам для поддержки производительности операций сортировки и поиска. Создание индексов не предусмотрено стандартом SQL, однако большинство диалектов языка поддерживают как минимум следующие операторы создания и удаления индексов:

create [unique] index имя_индекса

on имя_базового_отношения(имя_атрибута,..)

drop index {имя_базового_отношения.имя_индекса},..

Имя индекса должно быть уникально в пределах отношения. Поэтому в операторе удаления ин-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]