TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1330 2.68K
Продвинутый SQL-прием: partial index вместо “универсального” индекса

Если в таблице много строк, но запрос почти всегда смотрит только активные записи, не обязательно индексировать всё.

Например, есть таблица заказов:


SELECT *
FROM orders
WHERE user_id = 42
AND status = 'active';


Обычный индекс:


CREATE INDEX idx_orders_user_status
ON orders(user_id, status);


Работает, но он хранит данные по всем статусам: active, cancelled, archived, failed и так далее.

Если чаще всего нужны только активные заказы, можно сделать partial index:


CREATE INDEX idx_orders_active_user
ON orders(user_id)
WHERE status = 'active';


Такой индекс меньше, быстрее обновляется и лучше помещается в память. Планировщик сможет использовать его для запросов, где условие совпадает:


SELECT *
FROM orders
WHERE user_id = 42
AND status = 'active';


Индекс не обязан покрывать всю таблицу. Иногда лучший индекс - это индекс только по тем строкам, которые реально участвуют в горячих запросах.

Особенно полезно для флагов вроде deleted_at IS NULL, status = 'active', is_published = true, processed = false.

#sql #postgresql #database #backend
  • ❤ 6
  • 👍 5
  • 🔥 1
  • 😁 1
More from @databases_tg
  1. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  2. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
  3. Sep 25, 2026Как облегчить работу ИТ-аналитика уже сейчас — без долгосрочных перестроек процессов? Обсу…
  4. Sep 24, 2026🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash…
  5. Sep 23, 2026⚡️ SQL-задача с подвохом Что вернёт этот запрос в PostgreSQL? CREATE TABLE payments ( id i…
  6. Sep 17, 2026🖥 Race condition в SQL: как продать последний товар дважды? Race condition в SQL: Дио и Д…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →