6.5.7 Як додати B-TREE індекс у БД

Database Optimize Banner

Розгляньмо практичний приклад оптимізації таблиці з мільйонами рядків за допомогою найпростішого індексу.

Додатково: у нас є детальна інструкція щодо використання індексів для оптимізації БД. Ознайомитися з нею Ви можете за адресою.

Аналіз

Для аналізу нам необхідно буде phpMyAdmin та ознайомитись з нашою базою даних.

У нас є база даних testdata з єдиною однойменною таблицею. Тепер варто переглянути структуру самої таблиці:

phpMyAdmin, структура БД

Як бачимо, у нас є ~3533441 рядки. Повний перебір такої таблиці займе багато часу за мірками роботи з БД.

Давайте перевіримо наявність індексів. Зробити це можна у вкладці Структура:

phpMyAdmin, структура таблиці

Індексація відсутня (Primary Key це технічний індекс по колонці id). Спробуємо виконати запит і подивитися, скільки часу займе повний перебір:

phpMyAdmin, виконання запиту ДО

3.2 секунди це занадто довго для подібного запиту. Спробуємо скоротити цей час.

Додавання індексу

Отже, який саме тип індексу нам варто додати і яким чином?

Виходячи зі статті, наш вибір впаде на найпростіший BTREE.

Давайте додамо його до таблиці наступним запитом:

ALTER TABLE testdata ADD INDEX hash(hash) USING BTREE;

Врахуйте: створення індексу може зайняти відчутну кількість часу. Це залежить від самої таблиці та складності індексу.

Тестування

Час перевірити швидкість виконання аналогічного запиту після додавання індексу:

phpMyAdmin, виконання запиту ПІСЛЯ

Як бачимо, запит був виконаний за 0.0017 секунд. Це більш ніж тисячоразове прискорення.

Звичайно, ця тестова таблиця була синтетично створена для відтворення подібного результату. У реальних умовах тисячократне прискорення запитів може бути досягнуто далеко не завжди.