Indexes

В этом учебном материале вы узнаете, как создавать, переименовывать и удалять индексы (create, rename and drop indexes) в Oracle/PLSQL с синтаксисом и примерами.

Что такое indexes в Oracle?

В Oracle Indexes представляет собой метод настройки производительности, чтобы более быстрее извлекать записи из таблиц. Indexes создает запись для каждого значения, которое появляется в индексированных столбцах. По умолчанию, Oracle создает индексы B-дерева.

Create INDEX

Синтаксис

Синтаксис для создания индекса в Oracle/PLSQL:

CREATE [UNIQUE] INDEX index_name
ON table_name (column1, column2, ... column_n)
[ COMPUTE STATISTICS ];

UNIQUE
Указывает на то, что сочетание значений в индексируемых столбцах должны быть уникальными.
index_name
Наименование индекса.
table_name
Имя таблицы для которой создается индекс.
column1, column2, ... column_n
Столбцы для использования в индексе.
COMPUTE STATISTICS
Это послание Oracle для сбора статистических данных во время создания индекса. Статистические данные затем используются оптимизатором, чтобы выбрать "план выполнения", когда выполняются SQL запросы.

Пример

Рассмотрим пример того, как создать индекс в Oracle/PLSQL.
Например:

В этом примере мы создали index таблицы supplier под названием supplier_idx. Он состоит только из одного поля supplier_name.

Index также можно создать для нескольких полей, как в примере ниже:

При создании index, для сбора статистических данных можно сделать следующим образом:

Создание Function-Based INDEX

В Oracle, вы не ограничены созданием индексов только на столбцах. Вы можете создавать индексы на базе функций.

Синтаксис

Синтаксис для создания function-based index в Oracle/PLSQL:

CREATE [UNIQUE] INDEX index_name
ON table_name (function1, function2, ... function_n)
[ COMPUTE STATISTICS ];

UNIQUE
Указывает на то, что сочетание значений в индексируемых столбцах должны быть уникальными.
index_name
Наименование индекса.
table_name
Имя таблицы для которой создается индекс.
function1, function2, ... function_n
Функции для использования в индексе.
COMPUTE STATISTICS
Это послание Oracle для сбора статистических данных во время создания индекса. Статистические данные затем используются оптимизатором, чтобы выбрать "план выполнения", когда выполняются SQL запросы.

Пример

Рассмотрим на примере того, как создать function-based index в Oracle/PLSQL.
Например:

В этом примере мы создали index, основанный на вычислении поля supplier_name в верхний регистр с помощью функции UPPER.
Однако, чтобы быть уверенным, что оптимизатор Oracle использует этот индекс при выполнении ваших SQL предложений, убедитесь, что UPPER (supplier_name) не вычисляет значения NULL. Для обеспечения этого, добавьте UPPER (supplier_name) IS NOT NULL к вашему WHERE следующим образом:

Rename INDEX

Синтаксис

Синтаксис для переименования index в Oracle/PLSQL:

ALTER INDEX index_name
RENAME TO new_index_name;

index_name
наименование индекса, который вы хотите переименовать.
new_index_name
Новое наименование, которое будет присвоено индексу.

Пример

Рассмотрим пример того, как переименовать индекс в Oracle/PLSQL.
Например:

В этом примере мы переименовали index с названием supplier_idx в supplier_index_name.

Сбор статистики по INDEX

Если при первом создании index вы не указали сбор статистики по index, или вы хотите обновить статистику, то вы можете выполнить это позднее, использовав команду ALTER INDEX для сбора статистических данных.

Синтаксис

Синтаксис для сбора статистических данных по индексу в Oracle/PLSQL:

ALTER INDEX index_name
REBUILD COMPUTE STATISTICS;

index_name
наименование индекса, для сбора статистических данных.

Пример

Рассмотрим пример того, как включить сбора статистики по index в Oracle/PLSQL.
Например:

В этом примере, мы собираем статистику для индекса supplier_idx.

Drop INDEX

Синтаксис

Синтаксис для удаления index индекса в Oracle/PLSQL.

DROP INDEX index_name;

index_name
наименование индекса, который хотим удалить.

Пример

Рассмотрим пример того, как удалить index в Oracle/PLSQL.
Например:

В этом примере мы удалили индекс supplier_idx.