Що таке індекси в MySQL
Індекс — окрема структура даних, яка прискорює пошук по таблиці. Без індексу MySQL робить повний перебір рядків. З правильним індексом — O(log n) замість O(n).
Типи індексів
| Тип | Опис |
|---|---|
PRIMARY KEY | Унікальний, не NULL, один на таблицю |
UNIQUE | Забороняє дублікати |
INDEX / KEY | Звичайний неунікальний індекс |
FULLTEXT | Повнотекстовий пошук |
Створення індексів
ALTER TABLE orders ADD INDEX idx_status (status);
ALTER TABLE users ADD UNIQUE INDEX idx_email (email);
CREATE INDEX idx_user_status ON orders(user_id, status);Аналіз запиту через EXPLAIN
EXPLAIN SELECT * FROM orders WHERE user_id = 5 AND status = 'pending'\GНе додавайте індекси на всі стовпці — кожен індекс уповільнює INSERT/UPDATE/DELETE.