Индекс — это объект базы данных, обеспечивающий прямой и быстрый доступ к строкам в таблице. Индексы автоматически используются и поддерживаются сервером Oracle. Если индекс создан, от пользователя в дальнейшем никаких прямых действий не требуется. Указатель прямо указывает на соответствующую строку в таблице, устраняя необходимость полного просмотра таблицы. Индексы физически и логически независимы от индексируемой таблицы. Это означает, что индексы могут быть созданы или удалены в любое время, и то не повлияет на базовые таблицы и другие индексы.
Существует два типа индексов:
· Уникальный, создается автоматически, если столбец с ограничением PRIMARY KEY или UNIQUE.
· Неуникальный, если столбец с ограничением FOREIGN KEY.
Однако, увеличение количества индексов для таблицы не всегда ускоряет запросы. Каждая операция DML, выполняемая над таблицей с индексами, требует обновления индекса. Чем больше индексов связано с таблицей, тем больше усилий требуется от сервера на обновление всех индексов после операции DML.
Типы индексов
Тип
Описание
Уникальный
Обеспечивает уникальность значений для указанных столбцов.
Неуникальный
Ускоряет запросы.
Одностолбцовый
В индексе использован только один столбец.
Составной или сложный
Индекс может содержать до 16 столбцов для ускорения запросов или проверки уникальности. Столбцы не обязательно должны быть смежными.
Типы индексов не исключают друг друга. Например, можно создать уникальный составной индекс.
Создание индекса
Индекс по одному или нескольким столбцам создается с помощью команды CREATE INDEX.
Синтаксис
CREATE INDEX индекс ON таблица (столбец[, столбец]...);
где:
индекс
имя индекса.
таблица
имя таблицы.
столбец
имя столбца в индексируемой таблице.
Пример.
Создание индекса для ускорения доступа к столбцу FIO в таблице Klient .
SQL> create index klient_fio_idx
2 on klient(fio);
Индекс создан.
Просмотр индексов
Пример.
Вывод всех ранее созданных индексов, задействованных столбцов и информации об уникальности для таблицы Klient.