Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_po_SUBD.docx
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
135.36 Кб
Скачать
  1. Индексы. Создание индексов. Изменение индекса. Восстановление индекса. Удаление индекса.

При выполнении запроса InterBase сначала определяет список индексов, связанный с данной таблицей. Затем устанавливает, что является более эффективным, просмотреть всю таблицу или для обработки запроса использовать существующий индекс. Если InterBase решает использовать индекс, то поиск ведется сначала по ключевым значениям в индексе, а затем, используя указатели, осуществляется просмотр самих таблиц для дополнительной фильтрации и окончательной выборки требуемых данных.

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

Индекс может быть определен как на отдельном столбце, так и на множестве столбцов таблицы.

Тем не менее, индексирование оправдано не всегда.

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

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

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

4.1 Создание индексов

Индексы создаются либо пользователем с помощью команды CREATE INDEX, либо автоматически при выполнении команды CREATE TABLE.

Для просмотра индексов, определенных для текущей базы данных, используется команда SHOW INDEX, после которой можно указывать имя таблицы – тогда индексы просматриваются для указанной таблицы. Для просмотра конкретного индекса используют команду SHOW INDEX <имя_индекса>.

InterBase автоматически генерирует индексы системного уровня по столбцу или набору столбцов, когда таблицы определяются с конструкцией ограничения PRIMARY KEY, FOREIGN KEY или UNIQUE.

Команда CREATE INDEX создает индекс на одном или нескольких столбцах таблицы.

CREATE [UNIQUE] [ASC][DESC]

INDEX <имя_индекса> ON <название таблицы> (<список полей>);

ASC и DESC задают способ упорядочения данных по возрастанию или по убыванию соответственно.

UNIQUE – задает режим уникального индекса. При задании такого режима блокируется запись в таблицу строк с одними и теми же значениями в столбцах, образующих индекс.

Пример. Создание уникального индекса по идентификатору студента для таблицы student

CREATE UNIQUE ASC

INDEX OD_IND ON STUDENT (STUDENT_ID);

Если предполагается сортировка как по возрастанию, так и по убыванию, то можно соответственно использовать два разных индекса.

4.2 Изменение индекса осуществляется командой

ALTER INDEX <имя индекса> {ACTIVE|INACTIVE}

Как видно из синтаксиса, данная команда не предназначена для явного изменения индекса. Она позволяет деактивировать или, наоборот, повторно активировать неактивный индекс. При реактивации индекса осуществляется его перестроение. Это можно использовать для оптимизации индекса, поскольку после большого числа изменений, он может стать несбалансированным.

На использование команды ALTER INDEX накладываются некоторые ограничения:

  • Нельзя выполнить команду ALTER INDEX, если изменяемый индекс используется в данный момент (например командами изменения или выборки);

  • Для выполнения команды необходимо обладать соответствующими правами.

  • Команда ALTER INDEX неприменима к индексам, используемым в качестве ограничений логической целостности, определенным, как UNIQUE, PRIMARY KEY, FOREIGN KEY.

  • ALTER INDEX неприменима для изменения состава столбцов в индексе. Для выполнения данной команды необходимо сначала удалить индекс, а затем создать его снова.

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