В этом учебном пособии вы узнаете, как создавать, удалять и переименовывать индексы в MariaDB с синтаксисом и примерами.
Что такое индекс в MariaDB?
Индекс - это метод настройки производительности, позволяющий быстрее извлекать записи. Индекс создает запись для каждого значения, которое появляется в индексированных столбцах.
Создать индекс
Есть 2 способа Создать индекс. Вы можете либо создать индекс при первом создании таблицы с помощью оператора CREATE TABLE, либо использовать оператор CREATE INDEX после создания таблицы.
Синтаксис
Синтаксис для создания индекса с использованием CREATE TABLE в MariaDB:
(
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:
[ 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. Этот оператор будет одновременно создавать таблицу и индекс.
Например:
1 2 3 4 5 6 7 8 |
CREATE TABLE websites ( website_id INT(11) NOT NULL AUTO_INCREMENT, website_name VARCHAR(25) NOT NULL, server_name VARCHAR(20), creation_date DATE, CONSTRAINT websites_pk PRIMARY KEY (website_id), INDEX websites_idx (website_name) ); |
В этом примере мы создали таблицу website, а также индекс с именем website_idx, который состоит из столбца website_name.
Далее мы покажем вам, как сначала создать таблицу, а затем создать индекс с помощью оператора CREATE INDEX.
Например:
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE websites ( website_id INT(11) NOT NULL AUTO_INCREMENT, website_name VARCHAR(25) NOT NULL, server_name VARCHAR(20), creation_date DATE, CONSTRAINT websites_pk PRIMARY KEY (website_id) ); CREATE INDEX websites_idx ON websites (website_name); |
В этом примере оператор CREATE TABLE создаст таблицу website. Инструкция CREATE INDEX создаст индекс с именем website_idx, который состоит из поля website_name.
Уникальный индекс
Чтобы создать уникальный индекс для таблицы, вам необходимо указать ключевое слово UNIQUE при создании индекса. Опять же, это можно сделать с помощью оператора CREATE TABLE или оператора CREATE INDEX.
Например:
1 2 3 4 5 6 7 8 |
CREATE TABLE websites ( website_id INT(11) NOT NULL AUTO_INCREMENT, website_name VARCHAR(25) NOT NULL, server_name VARCHAR(20), creation_date DATE, CONSTRAINT websites_pk PRIMARY KEY (website_id), Уникальный индекс websites_idx (website_name, server_name) ); |
Или
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE websites ( website_id INT(11) NOT NULL AUTO_INCREMENT, website_name VARCHAR(25) NOT NULL, server_name VARCHAR(20), creation_date DATE, CONSTRAINT websites_pk PRIMARY KEY (website_id) ); CREATE UNIQUE INDEX websites_idx ON websites (website_name, server_name); |
В обоих этих примерах будет создан уникальный индекс для полей website_name и server_name, поэтому комбинация этих полей всегда должна содержать уникальное значение без дубликатов. Это отличный способ обеспечить целостность вашей базы данных, если вам требуются уникальные значения в столбцах, которые не являются частью вашего первичного ключа.
Удалить индекс
Вы можете удалить индекс в MariaDB, используя инструкцию DROP INDEX.
Синтаксис
Синтаксис для удаления индекса с помощью оператора DROP INDEX в MariaDB:
ON table_name;
- index_name
- Название индекса для удаления.
- table_name
- Имя таблицы, в которой был создан индекс.
Пример
Давайте рассмотрим пример того, как удалить индекс в MariaDB.
Например:
1 2 |
DROP INDEX websites_idx ON websites; |
В этом примере мы удалили индекс с именем website_idx из таблицы sites.
Переименовать индекс
Вы можете переименовать индекс в MariaDB, используя инструкцию ALTER TABLE.
Синтаксис
The Синтаксис to Переименовать индекс using the ALTER TABLE statement is:
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.
Например:
1 2 |
ALTER TABLE websites<br> DROP INDEX websites_idx, ADD INDEX websites_new_index (website_name, server_name); |
В этом примере мы переименовали индекс с именем website_idx в website_new_index. Это было сделано путем удаления старого индекса и последующего добавления нового индекса.