В этом учебном материале вы узнаете, как создавать, переименовывать и удалять индексы (create, rename and drop indexes) в Oracle/PLSQL с синтаксисом и примерами.
Что такое indexes в Oracle?
В Oracle Indexes представляет собой метод настройки производительности, чтобы более быстрее извлекать записи из таблиц. Indexes создает запись для каждого значения, которое появляется в индексированных столбцах. По умолчанию, Oracle создает индексы B-дерева.
Create INDEX
Синтаксис
Синтаксис для создания индекса в Oracle/PLSQL:
ON table_name (column1, column2, ... column_n)
[ COMPUTE STATISTICS ];
UNIQUE
Указывает на то, что сочетание значений в индексируемых столбцах должны быть уникальными.
index_name
Наименование индекса.
table_name
Имя таблицы для которой создается индекс.
column1, column2, ... column_n
Столбцы для использования в индексе.
COMPUTE STATISTICS
Это послание Oracle для сбора статистических данных во время создания индекса. Статистические данные затем используются оптимизатором, чтобы выбрать "план выполнения", когда выполняются SQL запросы.
Пример
Рассмотрим пример того, как создать индекс в Oracle/PLSQL.
Например:
1 2 |
CREATE INDEX supplier_idx ON supplier (supplier_name); |
В этом примере мы создали index таблицы supplier под названием supplier_idx. Он состоит только из одного поля supplier_name.
Index также можно создать для нескольких полей, как в примере ниже:
1 2 |
REATE INDEX supplier_idx ON supplier (supplier_name, city); |
При создании index, для сбора статистических данных можно сделать следующим образом:
1 2 3 |
CREATE INDEX supplier_idx ON supplier (supplier_name, city) COMPUTE STATISTICS; |
Создание Function-Based INDEX
В Oracle, вы не ограничены созданием индексов только на столбцах. Вы можете создавать индексы на базе функций.
Синтаксис
Синтаксис для создания function-based index в Oracle/PLSQL:
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.
Например:
1 2 |
CREATE INDEX supplier_idx ON supplier (UPPER(supplier_name)); |
В этом примере мы создали index, основанный на вычислении поля supplier_name в верхний регистр с помощью функции UPPER.
Однако, чтобы быть уверенным, что оптимизатор Oracle использует этот индекс при выполнении ваших SQL предложений, убедитесь, что UPPER (supplier_name) не вычисляет значения NULL. Для обеспечения этого, добавьте UPPER (supplier_name) IS NOT NULL к вашему WHERE следующим образом:
1 2 3 4 |
SELECT supplier_id, supplier_name, UPPER(supplier_name) FROM supplier WHERE UPPER(supplier_name) IS NOT NULL ORDER BY UPPER(supplier_name); |
Rename INDEX
Синтаксис
Синтаксис для переименования index в Oracle/PLSQL:
RENAME TO new_index_name;
index_name
наименование индекса, который вы хотите переименовать.
new_index_name
Новое наименование, которое будет присвоено индексу.
Пример
Рассмотрим пример того, как переименовать индекс в Oracle/PLSQL.
Например:
1 2 |
ALTER INDEX supplier_idx RENAME TO supplier_index_name; |
В этом примере мы переименовали index с названием supplier_idx в supplier_index_name.
Сбор статистики по INDEX
Если при первом создании index вы не указали сбор статистики по index, или вы хотите обновить статистику, то вы можете выполнить это позднее, использовав команду ALTER INDEX для сбора статистических данных.
Синтаксис
Синтаксис для сбора статистических данных по индексу в Oracle/PLSQL:
REBUILD COMPUTE STATISTICS;
index_name
наименование индекса, для сбора статистических данных.
Пример
Рассмотрим пример того, как включить сбора статистики по index в Oracle/PLSQL.
Например:
1 2 |
ALTER INDEX supplier_idx REBUILD COMPUTE STATISTICS; |
В этом примере, мы собираем статистику для индекса supplier_idx.
Drop INDEX
Синтаксис
Синтаксис для удаления index индекса в Oracle/PLSQL.
index_name
наименование индекса, который хотим удалить.
Пример
Рассмотрим пример того, как удалить index в Oracle/PLSQL.
Например:
1 |
DROP INDEX supplier_idx; |
В этом примере мы удалили индекс supplier_idx.