Загружаем изображение…

Индексы в PostgreSQL/MySQL. Что мы забываем?



Ты добавил индекс, но запрос всё равно тормозит. Почему?

База данных не всегда использует индексы так, как вы ожидаете. Вот быстрый чеклист для
проверки перед деплоем миграции.

📋 Чеклист по индексам:

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
Просмотры: 1 728
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти