Базы данных. Учебное пособие

       

Индексы


По определениям ключей (первичных или вторичных, см.         п. 2.2) СУБД автоматиче­ски строит индексы, которые представляют собой механизмы быстрого доступа к хранящимся в таблицах данным.                   

Сущность индексов состоит в том, что они хранят отсортированные значения ин­дексных полей (т.е. полей, по которым построен индекс) и указатель на запись в таб­лице. Например, пусть имеется таблица, показанная на рис. 2.11.

Порядковый

№ записи

Дата прихода

товара

Наименование

товара

Количество,

кг



1

10.12.1999

Сахар

10

2

12.12.1999

Картофель

50

3

12.12.1999

Свекла

20

4

14.12.1999

Сахар

50

5

14.12.1999

Свекла

10

6

16.12.1999

Сливы

4

Рис. 2.11 Физическая структура таблицы

С логической точки зрения ее индексы выглядит так, как показано на рис. 2.12.

Индекс по дате прихода товара

Индекс по наименованию товара

Индекс по количе­ству

Дата прихода

№ за­писи

Наименование товара

№ записи

Количе­ство

№ записи

10.12.99

1

Картофель

2

4

6

12.12.99

2

Сахар

1

10

1

12.12.99

3

Сахар

4

10

5

14.12.99

4

Свекла

3

20

3

14.12.99

5

Свекла

5

50

2

16.12.99

6

Сливы

6

50

4

Рис. 2.12. Логическая структура индексов

Обратите внимание: значения полей в индексе («Дата прихода», «Наименование товара», «Количество») сортируются по возрастанию, что существенно ускоряет поиск нужных значений. Если, например, нужно выбрать все записи с наименованием товара «Свекла», нет нужды просматривать всю таблицу. Достаточно найти в индексе, построенном по столбцу «Наименование товара», первый указатель на запись, содер­жащую товар «Свекла», и считать из таблицы эту запись, а затем повторить то же для всех иных указателей в индексе на записи с товаром «Свекла». Поскольку значения полей отсортированы, поиск первого указателя осуществляется специальными мето­дами быстрого поиска и реализуется значительно быстрее, чем если бы поиск шел по неотсортированным полям таблицы. Такой метод доступа к записям таблицы называ­ется индексно-последовательным, потому что:

· поиск ведется по индексу, а не по таблице;

· доступ начинается с первой строки, удовлетворяющей условию запроса или его части;

· строки в индексе, начиная с первой найденной записи, просматриваются после­довательно.

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



Содержание раздела