Работа с индексами в 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

# MySQL # Базы данных # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет