6.5.7 Як додати B-TREE індекс у БД
Розгляньмо практичний приклад оптимізації таблиці з мільйонами рядків за допомогою найпростішого індексу.
Додатково: у нас є детальна інструкція щодо використання індексів для оптимізації БД. Ознайомитися з нею Ви можете за адресою.
Аналіз
Для аналізу нам необхідно буде phpMyAdmin та ознайомитись з нашою базою даних.
У нас є база даних testdata
з єдиною однойменною таблицею. Тепер варто переглянути структуру самої таблиці:
Як бачимо, у нас є ~3533441 рядки. Повний перебір такої таблиці займе багато часу за мірками роботи з БД.
Давайте перевіримо наявність індексів. Зробити це можна у вкладці Структура:
Індексація відсутня (Primary Key
це технічний індекс по колонці id
). Спробуємо виконати запит і подивитися, скільки часу займе повний перебір:
3.2 секунди це занадто довго для подібного запиту. Спробуємо скоротити цей час.
Додавання індексу
Отже, який саме тип індексу нам варто додати і яким чином?
Виходячи зі статті, наш вибір впаде на найпростіший BTREE.
Давайте додамо його до таблиці наступним запитом:
ALTER TABLE testdata ADD INDEX hash(hash) USING BTREE;
Врахуйте: створення індексу може зайняти відчутну кількість часу. Це залежить від самої таблиці та складності індексу.
Тестування
Час перевірити швидкість виконання аналогічного запиту після додавання індексу:
Як бачимо, запит був виконаний за 0.0017 секунд. Це більш ніж тисячоразове прискорення.
Звичайно, ця тестова таблиця була синтетично створена для відтворення подібного результату. У реальних умовах тисячократне прискорення запитів може бути досягнуто далеко не завжди.