В этом учебном пособии вы узнаете, как создать, удалить, и переименовать indexes в SQLite с синтаксисом и примерами.
Описание
Индекс - это метод настройки производительности, позволяющий быстрее извлекать записи. Индекс создает запись для каждого значения, которое появляется в индексированных столбцах. Каждое имя индекса должно быть уникальным в базе данных.
Создать индекс
Вы можете создать индекс в SQLite, используя оператор CREATE INDEX.
Синтаксис
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.
Например:
1 2 |
CREATE INDEX customer_idx ON customers (last_name); |
В этом примере мы создали индекс для таблицы customers с названием customer_idx. Он состоит только из одного поля - поля last_name. Мы также можем создать индекс с более чем одним полем, как в примере ниже:
1 2 |
CREATE INDEX customer_idx ON customers (state, city); |
Это создаст индекс с именем customer_idx, который использует два столбца - state и city.
Уникальный индекс
Чтобы создать уникальный индекс для таблицы, вам нужно указать ключевое слово UNIQUE в операторе CREATE INDEX.
Например:
1 2 |
CREATE UNIQUE INDEX customer_unique_idx ON customers (file_number); |
В этом примере будет создан уникальный индекс для поля file_number, так что это поле всегда должно содержать уникальное значение без дубликатов. Это отличный способ обеспечить целостность вашей базы данных, если вам требуются уникальные значения в столбцах, которые не являются частью вашего первичного ключа.
Частичный индекс
Вы можете создать частичный индекс для таблицы, в которую входит только подмножество записей.
Например:
1 2 3 |
CREATE INDEX customer_idx ON customers (last_name) WHERE last_name IS NOT NULL; |
Поскольку мы включили оператор WHERE, то частичный индекс создается только для тех созданных, где last_name не равно NULL. Записи, в которых last_name имеет значение NULL, не будут включены в индекс.
Удалить индекс
Вы можете удалить индекс в SQLite, используя оператор DROP INDEX.
Синтаксис
Синтаксис для удаления индекса в SQLite:
index_name
Название индекса для удаления.
IF EXISTS
Необязательный. Если указано, оператор DROP INDEX не вызовет ошибку, если индекс не существует.
Пример
Рассмотрим пример того, как удалить индекс в SQLite.
Например:
1 |
DROP INDEX customer_idx; |
В этом примере мы удалили индекс с именем customer_idx. Поскольку каждое имя индекса должно быть уникальным в базе данных, нам не нужно указывать имя таблицы в операторе DROP INDEX.
Переименовать индекс
Вы можете переименовать индекс в SQLite, сначала удалив его, а затем заново создав индекс с новым именем.
Синтаксис
Синтаксис для переименования индекса в SQLite:
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.
Например:
1 2 3 4 |
DROP INDEX customer_idx; CREATE INDEX customer_new_index ON customers (last_name); |
В этом примере мы переименовали индекс с именем customer_idx в customer_new_index.