Добрый день
Есть большая таблица, по которой должна производиться частая выборка
Структура таблицы:
id,parent_id,custom_name,released_at, ....
И запрос:
select *
from cards
where ("parent_id" is null or "custom_name" is not null or "released_at" > now()) and ...
Сделал explain по запросу и там:
-> Seq Scan on cards (cost=0.00..233142.26 rows=325284 width=8)
Filter: ((parent_id IS NULL) OR (custom_lang IS NOT NULL) OR (released_at > now()))
Сделал индексы на эти поля - узнал что с null они не работают
Сделал еще составной индекс cards(parent_id, custom_lang, released_at) - стало чуть быстрее, но explain не поменялся, все так же тот самый Filter в Seq Scan
Сделал еще cards(parent_id, custom_lang, released_at) where parent_id is null and custom_lang is not null - стало еще чуть быстрее, но все равно совершенно не достаточно. Все так же Filter в Seq Scan
Как можно еще как то оптимизировать запрос?