MariaDB индексы

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

Что такое индекс в MariaDB?

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

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

Есть 2 способа Создать индекс. Вы можете либо создать индекс при первом создании таблицы с помощью оператора CREATE TABLE, либо использовать оператор CREATE INDEX после создания таблицы.

Синтаксис

Синтаксис для создания индекса с использованием CREATE TABLE в MariaDB:

CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
..
column_n datatype [ NULL | NOT NULL ],

INDEX index_name [ USING BTREE | HASH ]
(index_col1 [(length)] [ASC | DESC],
index_col2 [(length)] [ASC | DESC],
..
index_col_n [(length)] [ASC | DESC])
);

Или
Синтаксис для создания индекса с использованием CREATE INDEX в MariaDB:

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
[ USING BTREE | HASH ]
ON table_name
(index_col1 [(length)] [ASC | DESC],
index_col2 [(length)] [ASC | DESC],
..
index_col_n [(length)] [ASC | DESC]);
UNIQUE
Необязательный. Модификатор UNIQUE указывает, что комбинация значений в индексированных столбцах должна быть уникальной.
FULLTEXT
Необязательный. Модификатор FULLTEXT индексирует весь столбец и не разрешает префикс. Таблицы InnoDB и MyISAM поддерживают эту опцию.
SPATIAL
Необязательный. Модификатор SPATIAL индексирует весь столбец и не позволяет индексированным столбцам содержать значения NULL. InnoDB (начиная с MariaDB 5.7) и таблицы MyISAM поддерживают эту опцию.
index_name
Имя, которое нужно присвоить индексу.
table_name
Имя таблицы, в которой создается индекс.
index_col1, index_col2, .. index_col_n
Столбцы для использования в индексе.
length
Необязательный. Если указано, индексируется только префикс столбца, а не весь столбец. Для недвоичных строковых столбцов это значение представляет собой заданное количество символов столбца для индексации. Для двоичных строковых столбцов это значение представляет собой заданное количество байтов столбца для индексации.
ASC
Необязательный. Индекс сортируется в порядке возрастания для этого столбца.
DESC
Необязательный. Индекс сортируется в порядке убывания для этого столбца.

Пример

Рассмотрим пример того, как создать индекс в MariaDB с помощью оператора CREATE TABLE. Этот оператор будет одновременно создавать таблицу и индекс.
Например:

В этом примере мы создали таблицу website, а также индекс с именем website_idx, который состоит из столбца website_name.
Далее мы покажем вам, как сначала создать таблицу, а затем создать индекс с помощью оператора CREATE INDEX.
Например:

В этом примере оператор CREATE TABLE создаст таблицу website. Инструкция CREATE INDEX создаст индекс с именем website_idx, который состоит из поля website_name.

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

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

Например:

Или

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

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

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

Синтаксис

Синтаксис для удаления индекса с помощью оператора DROP INDEX в MariaDB:

DROP INDEX index_name
ON table_name;
index_name
Название индекса для удаления.
table_name
Имя таблицы, в которой был создан индекс.

Пример

Давайте рассмотрим пример того, как удалить индекс в MariaDB.
Например:

В этом примере мы удалили индекс с именем website_idx из таблицы sites.

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

Вы можете переименовать индекс в MariaDB, используя инструкцию ALTER TABLE.

Синтаксис

The Синтаксис to Переименовать индекс using the ALTER TABLE statement is:

ALTER TABLE table_name
DROP INDEX index_name,
ADD INDEX new_index_name [ USING BTREE | HASH ]
(index_col1 [(length)] [ASC | DESC],
index_col2 [(length)] [ASC | DESC],
..
index_col_n [(length)] [ASC | DESC]);
table_name
Имя таблицы, в которой был создан индекс.
index_name
Имя индекса, который вы хотите переименовать.
new_index_name
Новое имя для индекса.

Пример

Давайте рассмотрим пример того, как переименовать индекс в MariaDB.
Например:

В этом примере мы переименовали индекс с именем website_idx в website_new_index. Это было сделано путем удаления старого индекса и последующего добавления нового индекса.