Работа с индексами в MySQL и MariaDB

Индексы позволяют оптимизировать работу с базой — данные сортируются и СУБД не приходится искать значения среди всех записей. На практике, это может сократить время обработки запросов на несколько порядков.

Данная инструкция применима по отношению как к MySQL , так и MariaDB . В примерах будет использоваться таблица с названием table_test и индекс с названием index_test .

Для больших таблиц не создавайте индексы при помощи phpMyAdmin или других веб-инструментов, так как по умолчанию, интерпретатор PHP настроен на ограниченное время обработки скрипта, а процесс создания индекса может затянуться. Это может привести к потери данных.

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

Командная оболочка

Заходим в командную оболочку MySQL или MariaDB:

# mysql -uroot -p

* под учетной записью root с запросом пароля.

Выбираем базу, с которой будем работать:

mysql> use base1

* выбрана база с именем base1

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

Прежде чем начать, стоит убедиться в отсутствии индексов, чтобы не создать дубли (инструкция if not exists не работает для create index).

Увидеть имеющиеся индексы:

SHOW INDEX FROM table_test;

Простой индекс

Применяется для ускорения выборки данных.

Вводим следующую команду для создания простого индекса:

mysql> CREATE INDEX index_test ON table_test (name);

* в данном примере создан простой индекс, ускоряющий выборку данных, с именем index_test для поля name таблицы table_test

Для его удаления:

mysql> DROP INDEX index_test ON table_test;

Полнотекстовый поиск

Необходим для поиска данных с помощью функции MATCH. Индекс создается для таблиц типа «MyISAM» и полей с типом «text».

Создаем:

mysql> CREATE FULLTEXT INDEX index_test ON table_test (name);

Удаляем:

mysql> DROP INDEX index_test ON table_test;

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

Обеспечит уникальность данных для проиндексированного поля.

Создание:

mysql> CREATE UNIQUE INDEX index_test ON table_test (name);

Удаление:

mysql> DROP INDEX index_test ON table_test;

phpMyAdmin

Способ более удобный, но, как сказано выше, его не стоит применять в продуктивной среде.

Заходим в phpMyAdmin — выбираем базу данных и таблицу — переходим на вкладку Структура :

Вкладка структура в phpMyAdmin

В правой части кликаем по необходимому индексу для его создания:

Создаем индекс в phpMyAdmin

Для удаление в том же разделе Структура кликаем по Индексы и в раскрывшемся списке удаляем индекс:

Удаляем индекс в phpMyAdmin

EnglishRussianUkrainian