FirebirdSQL logo
 TABLEVIEW 

Кто может создать индекс?

Выполнить оператор CREATE INDEX могут:

  • Администраторы

  • Владелец таблицы, для которой создаётся индекс;

  • Пользователи с привилегией ALTER ANY TABLE.

Примеры

Example 1. Создание индекса
CREATE INDEX IDX_UPDATER ON SALARY_HISTORY (UPDATER_ID);
Example 2. Создание индекса с сортировкой ключей по убыванию
CREATE DESCENDING INDEX IDX_CHANGE
ON SALARY_HISTORY (CHANGE_DATE);
Example 3. Создание многосегментного индекса
CREATE INDEX IDX_SALESTAT ON SALES (ORDER_STATUS, PAID);
Example 4. Создание индекса, не допускающего дубликаты значений
CREATE UNIQUE INDEX UNQ_COUNTRY_NAME ON COUNTRY (NAME);
Example 5. Создание вычисляемого индекса
CREATE INDEX IDX_NAME_UPPER ON PERSONS
COMPUTED BY (UPPER (NAME));

Такой индекс может быть использован для не чувствительного к регистру поиска.

SELECT *
FROM PERSONS
WHERE UPPER(NAME) STARTING WITH UPPER('Iv');
Example 6. Создание частичного индекса
CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;

Если при выполнении выборки в условии WHERE будет точно такое же выражение, которое было задано в индексе, индекс будет использован, в противном случае нет.

SELECT * FROM T1 WHERE COL < 100;

-- PLAN (T1 INDEX (IT1_COL))

В следующем примере создаётся индекс, в который не будут включены значения NULL.

CREATE INDEX IT1_COL2 ON T1 (COL) WHERE COL IS NOT NULL;

Этот индекс может использоваться почти любыми предикатами поиска за исключением IS NULL и IS NOT DISTINCT FROM, поскольку другие выражение игнорируют NULL.

SELECT * FROM T1 WHERE COL > 100;

-- PLAN (T1 INDEX IT1_COL2)

Частичный индекс можно создать по нескольким значениям столбца, для этого их надо перечислить в IN или объединить несколько выражений оператором OR.

CREATE INDEX IT1_COL3 ON T1 (COL) WHERE COL = 1 OR COL = 2;
SELECT * FROM T1 WHERE COL = 2;

-- PLAN (T1 INDEX IT1_COL3)
См. также:

ALTER INDEX, DROP INDEX.