</>

Сайт в процесі розробки

Ми активно працюємо над сайтом і скоро він буде готовий до повноцінної роботи. Наразі сайт носить інформаційний характер. Дякуємо за ваше терпіння!

MySQL індексування: глибоке занурення для веб-розробників

15 червня 2025 Franya Team

Індекси — це не магія, це інженерія

Більшість розробників знають, що індекси прискорюють запити. Але далеко не всі розуміють, як саме вони працюють, коли не працюють, і як їх правильно створювати.

Як працює B-Tree індекс

MySQL за замовчуванням використовує B+Tree індекси у InnoDB. Для таблиці з 10 мільйонами рядків B-Tree пошук потребує приблизно 23 порівняння, тоді як повне сканування — 10 мільйонів.

Найпоширеніша помилка: індекс на все

Кожен індекс збільшує час INSERT/UPDATE/DELETE, бо MySQL повинен оновлювати всі індекси при зміні даних. Правильний підхід — індексуйте тільки ті стовпці, які регулярно використовуються у WHERE, JOIN, ORDER BY та GROUP BY.

Складені індекси та порядок стовпців

Складений індекс на (last_name, first_name, age) працює для запитів за last_name, за last_name + first_name, та за всіма трьома. Але він НЕ працює для запитів тільки за first_name. Це правило найлівішого префікса.

Покриті індекси (Covering Indexes)

Якщо всі стовпці, потрібні запиту, містяться в індексі, MySQL не звертається до самої таблиці — він бере все з індекса. Покриті індекси особливо ефективні для COUNT-запитів та агрегацій.

Повнотекстовий пошук vs LIKE

Оператор LIKE не використовує індекси — це завжди повне сканування. Для пошуку тексту використовуйте FULLTEXT індекси.

EXPLAIN — ваш найкращий друг

Завжди перевіряйте запити через EXPLAIN перед тим, як вважати їх оптимізованими.

Висновок

Індексування — це баланс між швидкістю читання та запису. Аналізуйте через EXPLAIN, розумійте B+Tree, дотримуйтесь правила найлівішого префікса — і ваші запити будуть літати.

Telegram WhatsApp Instagram

FAImail - Веб-розробка під замовлення

Онлайн
Привіт! Чим можемо допомогти?

Залиште контакти (необов'язково):