24
Устройство индексов на физическом уровне для нас совершенно не
имеет значения. Важно только знать, что создание индексов может привести
к значительному ускорению процессов поиска и сортировки.
Не следует создавать индекс на поля с ограниченным набором значе-
ний – например, на поле, хранящие пол человека, которое содержит только
два значения – "м" и "ж".
Использование индексов имеется два отрицательных последствия:
1. Для индексов дополнительно тратится дисковое пространство.
2. Наличие индексов замедляет модификацию данных в таблице.
Индексы создаются при помощи команды CREATE INDEX.
Синтаксис оператора создания индекса:
CREATE [UNIQUE] [ASC[ENDING] | DESC[ENGING]] INDEX
Имя_Индекса ON Таблица(Поле [, Поле ...]);
Индекс может быть либо возрастающим (ASC[ENDING]), либо убы-
вающим (DESC[ENGING]). Если при создании индекса указать UNIQUE, то
можно будет заносить в таблицу только уникальные значения индексирован-
ных полей.
Пример создания индекса:
-- индекс по фамилии человека:
CREATE INDEX Index_Person_Name ON Person(Pr_LastName);
По мере изменения данных в таблице производительность индекса
уменьшается. Периодически требуется пересоздавать индекс, чтобы восста-
новить его производительность.
Чтобы пересоздать индекс, можно использовать следующие способы:
1. Перестроить индекс с помощью команды ALTER INDEX. Для этого надо
последовательно выполнить две команды:
ALTER INDEX Имя_Индекса INACTIVE;
ALTER INDEX Имя_Индекса ACTIVE;
2. Удалить индекс (командой DROP INDEX), а затем повторно создать его.
3. Выполнить резервное копирование и восстановление базы данных.
Индекс характеризуется числом в пределах от 0 до 1, которое называ-
ется статистикой. Это число зависит от числа различных значений поля в
таблице. Оптимизатор запросов InterBase использует это число для опреде-
ления эффективности применения
индекса в запросе. Статистика определяет-
ся при создании и перестройке индекса, а также по команде пересчета стати-
стики. Когда число записей в таблице изменяется, пересчет статистики может
улучшить производительность. Пересчет статистики не перестраивает ин-
декс, а только определяет статистику.
Команда пересчета статистики индекса:
SET STATISTICS INDEX Имя_Индекса;