Работа с индексами в 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 - выбираем базу данных и таблицу - переходим на вкладку Структура:
В правой части кликаем по необходимому индексу для его создания:
Для удаление в том же разделе Структура кликаем по Индексы и в раскрывшемся списке удаляем индекс: