RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.
CREATE INDEX

1. Синтаксис

create-index-stmt:

CREATE UNIQUE INDEX IF NOT EXISTS schema-name . index-name ON table-name ( indexed-column ) , WHERE expr

expr:

indexed-column:

CREATE INDEX состоит из ключевых слов "CREATE INDEX", сопровождаемых названием нового индекса, ключевого слова "ON", названия ранее составленной таблицы, которая должна быть внесена в указатель и списка названий столбца таблицы и/или выражений, которые используются для ключа индекса. Если дополнительный оператор Where включен, то индекс "частичный".

Если есть опция IF NOT EXISTS и другой индекс с тем же самым именем уже существует, то эта команда ничего не делает.

Нет никаких произвольных ограничений на количество индексов, которые могут быть присоединены к единственной таблице. Количество колонок в индексе ограничивается набором значений sqlite3_limit( SQLITE_LIMIT_COLUMN,...).

Индекс удаляется командой DROP INDEX.

1.1. Индексы Unique

Если ключевое слово UNIQUE появляется между CREATE и INDEX, тогда дублирующие элементы индекса не позволены. Любая попытка вставить двойной вход приведет к ошибке.

В целях уникальных индексов все значения NULL считают отличающимися от всех других значений NULL и таким образом уникальными. Это одна из двух возможных интерпретаций стандарта SQL-92 (язык в стандарте неоднозначен). Интерпретация, используемая SQLite, является интерпретацией, сопровождаемой PostgreSQL, MySQL, Firebird и Oracle. Informix и Microsoft SQL Server следуют другой интерпретации стандарта, которая утверждает, что все значения NULL равны друг другу.

1.2. Индексы по выражениям

Выражения в индексе не могут сослаться на другие таблицы и не могут использовать подзапросы или функции, результат которых мог бы измениться (кроме random() или sqlite_version()). Выражения в индексе могут только обратиться к колонкам в таблице, которая вносится в указатель. Индексы по выражению не будут работать с версиями SQLite до version 3.9.0 (2015-10-14). См. подробности для получения дополнительной информации об использовании общих выражений в CREATE INDEX.

1.3. Спуск по индексам

Каждое имя столбца или выражение могут сопровождаться одним из ключевых слов "ASC" или "DESC", чтобы указать на порядок сортировки. Порядок сортировки может или не может быть проигнорирован в зависимости от формата файла базы данных, и в особенности номера формата схемы. "Устаревший" формат (1) схемы игнорирует порядок сортировки индекса. Спускающийся формат (4) схемы индекса принимает порядок сортировки индекса во внимание. Только версии SQLite 3.3.0 (2006-01-11) и позже в состоянии понять спускающийся формат индекса. Для совместимости версии SQLite между 3.3.0 и 3.7.9 использует устаревший формат схемы по умолчанию. Более новый формат схемы используется по умолчанию в версии 3.7.10 (2012-01-16) и позже. legacy_file_format pragma может применяться для изменения определенного поведения для любой версии SQLite.

1.4. NULLS FIRST и NULLS LAST

NULLS FIRST и NULLS LAST не поддерживается для индексов. Для сортировки целей SQLite полагает, что NULL меньше, чем все другие значения. Следовательно, значения NULL всегда появляются в начале индекса ASC и в конце индекса DESC.

1.5. Сопоставления

Параметр COLLATE произвольно после каждого имени столбца или выражения определяет последовательность сопоставления, используемую для ввода текста в той колонке. Последовательность сопоставления по умолчанию это последовательность сопоставления, определенная для той колонки в CREATE TABLE. Или если никакая последовательность сопоставления иначе не определяется, встроенная последовательность сопоставления BINARY используется.