6.5.7 Как добавить B-TREE индекс в БД
Давайте рассмотрим практический пример оптимизации таблицы с миллионами строк с помощью простейшего индекса.
Дополнительно: у нас имеется детальная инструкция по использованию индексов для оптимизации БД. Ознакомиться с ней Вы можете по адресу.
Анализ
Для анализа нам необходимо будет phpMyAdmin и ознакомиться с нашей базой данных.
У нас имеется база данных testdata
с единственной одноименной таблицей. Теперь стоит просмотреть структуру самой таблицы:
Как видим, у нас имеется ~3533441 строки. Полный перебор такой таблицы займет непростительно много времени по меркам работы с БД.
Давайте проверим наличие индексов. Сделать это можно во вкладке Структура:
Индексация отсутствует (Primary Key
это технический индекс по колонке id
). Давайте попробуем выполнить запрос и посмотреть, сколько времени займет полный перебор:
1.5 cекунды это непростительно долго для подобного запроса. Попробуем сократить это время.
Добавление индекса
Итак, какой именно тип индекса нам стоить добавить и каким образом?
Исходя из статьи, наш выбор падет на простейший BTREE.
Давайте добавим его в таблицу следующим запросом:
Учтите: создание индекса может занять ощутимое количество времени. Это зависит от самой таблицы и сложности индекса.
Тестирование
Время проверить скорость выполнения аналогичного запроса после добавления индекса:
Как видим, запрос был выполнен за 0.0005 секунд. Это более чем тысячекратное ускорение.
Конечно, эта тестовая таблица была синтетически создана именно для воспроизведения подобного результата. В реальных условиях тысячекратное ускорение запросов может быть достигнуто далеко не всегда.