Инструменты пользователя

Инструменты сайта


create_index

Различия

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

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
create_index [2013/07/16 00:04]
77.121.163.168 [Формат]
create_index [2013/07/16 01:22] (текущий)
Строка 1: Строка 1:
 +====== CREATE INDEX ======
 +
 +
 +
 +===== Версии сервера =====
 +^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.0.3 ^ 2.0.4 ^ 2.1 ^ 2.5 ^ 3.0 ^
 +|  +  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |  +  |
 +
 +
 +===== Формат =====
 +<​code>​
 +CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]
 +INDEX <имя индекса>​ ON <​таблица>​
 + { (<​столбец>​ [, <​столбец>​ ...]) | COMPUTED BY (выражение) };
 +</​code>​
 +
 +===== Описание =====
 +Индекс создается для одной конкретной таблицы. Имя индекса должно быть уникальным среди имен всех индексов базы данных. Индекс может быть уникальным (ключевое слово UNIQUE). Это означает,​ что в индексе не может быть двух разных строк с одинаковыми значениями столбцов. Столбцы,​ входящие в состав уникального индекса,​ не могут также иметь пустого значения NULL.
 +Ключевое слово ASCENDING (сокращенно ASC) означает,​ что записи индекса упорядочиваются по возрастанию значений столбцов,​ входящих в состав индекса. Этот вариант по умолчанию.
 +Ключевое слово DESCENDING (сокращение DESC) указывает,​ что записи индекса упорядочиваются по уменьшению значений столбцов индекса.
 +В состав индекса не могут входить столбцы,​ имеющие тип данных BLOB, а также столбцы любого типа данных,​ являющиеся массивами.
 +Для одной таблицы можно создать не более 256 индексов.
 +
 +===== Примеры =====
 +Если для таблицы PEOPLE требуются и возрастающий,​ и убывающий индексы по столбцу,​ хранящему фамилии людей LAST_NAME, то нужно создать два индекса,​ выполнив следующие операторы:​
 +
 +<code sql>
 +CREATE ASCENDING INDEX IDX_ASC_PEOPLE ON PEOPLE (LAST_NAME);​
 +CREATE DESCENDING INDEX IDX_DESC_PEOPLE ON PEOPLE (LAST_NAME);​
 +</​code>​
 +
 +Вместо одного или нескольких полей в индексе можно использовать выражение. Выражение будет проиндексировано в запросах,​ если оно находится в предложении WHERE, ORDER BY или GROUP BY. 
 +Индексирование нескольких выражений не поддерживается:​
 +<code sql>
 +CREATE INDEX IDX_UPNAME ON PERSONS COMPUTED BY (UPPER(NAME));​
 +COMMIT;
 +
 +-- следующие запросы будут использовать этот индекс idx_upname:
 +SELECT * FROM PERSONS ORDER BY UPPER(NAME);​
 +SELECT * FROM PERSONS WHERE UPPER(NAME) STARTING WITH '​ВЛАД';​
 +DELETE FROM PERSONS WHERE UPPER(NAME) = '​БОГДАН';​
 +DELETE FROM PERSONS WHERE UPPER(NAME) = '​БОГДАН'​ AND AGE > 65;
 +</​code>​
 +
 +<code sql>
 +CREATE DESCENDING INDEX IDX_DESC_EVENTS_YT ​
 +    ON MYEVENTS COMPUTED BY (EXTRACT(YEAR FROM STARTDATE) || TOWN);
 +COMMIT;
 +
 +-- следующий запрос будет использовать этот индекс idx_desc_events_yt:​
 +SELECT * FROM MYEVENTS
 +  ORDER BY EXTRACT(YEAR FROM STARTDATE) || TOWN DESC;
 +</​code>​
 +===== См. также =====
 +[[INDEX]], [[DROP INDEX]], [[ALTER INDEX]]
  
create_index.txt · Последние изменения: 2013/07/16 01:22 (внешнее изменение)