Индексы в PostgreSQL/MySQL. Что мы забываем?
Ты добавил индекс, но запрос всё равно тормозит. Почему?
База данных не всегда использует индексы так, как вы ожидаете. Вот быстрый чеклист для проверки перед деплоем миграции.
📋 Чеклист по индексам:
1. Cardianlity (Селективность): Индекс по полю
2. Порядок в составном индексе: Правило «слева направо».
💜 Индекс
💜 Но НЕ сработает эффективно для
3. Функции убивают индекс:
💜
💜
4. LIKE с процентом в начале:
💜
💜
5. Типы данных: Сравнение строки с числом (неявное приведение) может отключить использование индекса.
Совет: Всегда делайте
#database #sql #optimization #mysql #postgres
📲 Мы в MAX
👉 @php_lib
Ты добавил индекс, но запрос всё равно тормозит. Почему?
База данных не всегда использует индексы так, как вы ожидаете. Вот быстрый чеклист для проверки перед деплоем миграции.
📋 Чеклист по индексам:
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
👉 @php_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💯1