4.2.    Использование индексации для быстрого доступа к данным

Операции поиска-выборки (SELECT) данных из таблиц по значениям их полей могут быть существенно ускорены путем использования индексации данных. Индекс содержит упорядо­ченный (в алфавитном или числовом порядке) список содержи­мого столбцов или группы столбцов в индексируемой таблице с идентификаторами этих строк (ROWID), Для пользователей индексирование таблицы по тем или иным столбцам представ­ляет собой способ логического упорядочения значений индексиро­ванных столбцов, позволяющего, в отличие от последователь­ного перебора строк, существенно повысить скорость доступа к конкретным строкам таблицы при выборках, использующих значения этих столбцов. Индексация позволяет находить содер­жащий индексированную строку блок данных, выполняя не­большое число обращений к внешнему устройству.

При использовании индексации следует, однако, иметь в виду, что управление индексом существенно замедляет время выполнения операций, связанных с обновлением данных (та­ких, как INSERT и DELETE), так как эти операции требуют пере­стройки индексов.

Индексы можно создавать как по одному, так и по множе­ству полей. Если указано более одного поля для создания един­ственного индекса, данные упорядочиваются по значениям первого поля, по которому осуществляется индексирование. Внутри получившейся группы осуществляется упорядочение по значениям второго поля, для получившихся в результате групп осуществляется упорядочение по значениям третьего по­ля и тд.

Синтаксис команды создания индекса имеет следующий вид;

CREATE МЭЕХ <имя индекса> ON <имя табпнды> (<имя столбца>

[,<*мя столбца>]);

При этом таблица должна быть уже создана и содержать столбцы, имена которых указаны в команде создания индекса. Имя индекса, определенное в команде, должно быть уникаль­ным в базе данных. Будучи однажды созданным, индекс явля­ется невидимым для пользователя, все операции с ним осущес­твляет СУБД.

Пример

Если таблица EXAM MARKS часто используется для поиска оценки конкретного студента по значению поля STUDENT ID, то следует создать индекс по этому полю.

CREATE INDEX STUDENT_ID_1 ON EXAM_MARKS    (STUDENT_ID) ;

Для удаления индекса (при этом обязательно требуется знать его имя) используется команда DROP INDEX, имеющая следующий синтаксис:

DROP MDEX <имя индекса>;

Удаление индекса не изменяет содержимого поля или по­лей, индекс которых удаляется.