Indexes SQLite

В этом учебном пособии вы узнаете, как создать, удалить, и переименовать indexes в SQLite с синтаксисом и примерами.

Описание

Индекс - это метод настройки производительности, позволяющий быстрее извлекать записи. Индекс создает запись для каждого значения, которое появляется в индексированных столбцах. Каждое имя индекса должно быть уникальным в базе данных.

Создать индекс

Вы можете создать индекс в SQLite, используя оператор CREATE INDEX.

Синтаксис

CREATE [UNIQUE] INDEX [IF NOT EXISTS] index_name
ON table_name
(column1 [ASC | DESC],
column2 [ASC | DESC],
...
column_n [ASC | DESC])
[ WHERE conditions ];

UNIQUE
Указывает на то, что комбинация значений в индексированных столбцах должна быть уникальной.

IF NOT EXISTS
Необязательный. Если указано, оператор CREATE INDEX не вызовет ошибку, если индекс уже существует.

index_name
Имя, которое нужно присвоить индексу.

table_name
Имя таблицы, в которой нужно создать индекс.

column1, column2, ... column_n
Столбцы для использования в индексе.

ASC
Необязательный. Индекс сортируется в порядке возрастания для этого столбца.

DESC
Необязательный. Индекс сортируется в порядке убывания для этого столбца.

WHERE conditions
Частичный индекс создается только для подмножества записей в таблице.

Пример

Рассмотрим пример того, как создать индекс в SQLite.

Например:

В этом примере мы создали индекс для таблицы customers с названием customer_idx. Он состоит только из одного поля - поля last_name. Мы также можем создать индекс с более чем одним полем, как в примере ниже:

Это создаст индекс с именем customer_idx, который использует два столбца - state и city.

Уникальный индекс

Чтобы создать уникальный индекс для таблицы, вам нужно указать ключевое слово UNIQUE в операторе CREATE INDEX.

Например:

В этом примере будет создан уникальный индекс для поля file_number, так что это поле всегда должно содержать уникальное значение без дубликатов. Это отличный способ обеспечить целостность вашей базы данных, если вам требуются уникальные значения в столбцах, которые не являются частью вашего первичного ключа.

Частичный индекс

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

Например:

Поскольку мы включили оператор WHERE, то частичный индекс создается только для тех созданных, где last_name не равно NULL. Записи, в которых last_name имеет значение NULL, не будут включены в индекс.

Удалить индекс

Вы можете удалить индекс в SQLite, используя оператор DROP INDEX.

Синтаксис

Синтаксис для удаления индекса в SQLite:

DROP INDEX [IF EXISTS] index_name;

index_name
Название индекса для удаления.

IF EXISTS
Необязательный. Если указано, оператор DROP INDEX не вызовет ошибку, если индекс не существует.

Пример

Рассмотрим пример того, как удалить индекс в SQLite.

Например:

В этом примере мы удалили индекс с именем customer_idx. Поскольку каждое имя индекса должно быть уникальным в базе данных, нам не нужно указывать имя таблицы в операторе DROP INDEX.

Переименовать индекс

Вы можете переименовать индекс в SQLite, сначала удалив его, а затем заново создав индекс с новым именем.

Синтаксис

Синтаксис для переименования индекса в SQLite:

DROP INDEX [IF EXISTS] index_name;

CREATE [UNIQUE] INDEX [IF NOT EXISTS] new_index_name
ON table_name
(column1 [ASC | DESC],
column2 [ASC | DESC],
...
column_n [ASC | DESC])
[ WHERE conditions ];

index_name
Имя индекса, который вы хотите переименовать.

new_index_name
Новое имя для индекса.

Пример

Рассмотрим пример того, как переименовать индекс в SQLite.

Например:

В этом примере мы переименовали индекс с именем customer_idx в customer_new_index.