Когда индекс помогает
- Колонки в
WHERE, JOIN ON, ORDER BY, GROUP BY - Колонки с высокой кардинальностью (много уникальных значений) — идеально для email, uuid
Когда индекс вредит
- Таблицы с частыми INSERT/UPDATE/DELETE — каждое изменение обновляет индекс
- Колонки с низкой кардинальностью (boolean, status с 3 значений) — MySQL может выбрать full scan вместо индекса
Составные индексы
Индекс (a, b, c) используется слева направо: запрос с WHERE a = 1 AND b = 2 использует индекс, а WHERE b = 2 — нет. Правило левого префикса.