Ты добавил индекс, но запрос всё равно тормозит. Почему?
База данных не всегда использует индексы так, как вы ожидаете. Вот быстрый чеклист для проверки перед деплоем миграции.
📋 Чеклист по индексам:
1. Cardianlity (Селективность): Индекс по полю
gender (M / F) почти бесполезен. Базе проще прочитать всю таблицу (Full Scan), чем прыгать по индексу, который отсеет всего 50% записей.2. Порядок в составном индексе: Правило «слева направо».
💜Индекс
(group_id, status) сработает для WHERE group_id = 5.💜Но НЕ сработает эффективно для
WHERE status = active.3. Функции убивают индекс:
💜
WHERE YEAR(created_at) = 2026 - индекс по created_at игнорируется.💜
WHERE created_at >= '2026-01-01' - индекс работает.4. LIKE с процентом в начале:
💜
LIKE '%text' - Full Scan. Индекс бесполезен.💜
LIKE 'text%' - Range Scan. Индекс работает.5. Типы данных: Сравнение строки с числом (неявное приведение) может отключить использование индекса.
Совет: Всегда делайте
EXPLAIN (или EXPLAIN ANALYZE) на сложных запросах перед выкаткой. Доверяй, но проверяй.#database #sql #optimization #mysql #postgres
📲 Мы в MAX
👉 @php_lib