Библиотека PHP программиста 👨🏼‍💻👩‍💻
2.16K subscribers
370 photos
171 videos
7 files
375 links
Полезные материалы по PHP, Laravel, Symfony, CodeIgniter, CakePHP, Phalcon

По всем вопросам @evgenycarter
Download Telegram
Индексы в 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

📲 Мы в MAX

👉 @php_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💯1