amount_in_byn is null and currency != 'BYN' ;
индекс
CREATE INDEX CONCURRENTLY core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart
((amount_in_byn is NULL), ((currency)::text <> 'BYN'::text));
explain
Gather (cost=1000.00..462360.94 rows=38285 width=475)
Workers Planned: 2
-> Parallel Seq Scan on core_zreportcurrencypart (cost=0.00..457532.44 rows=15952 width=475)
Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text))
По оценкам дороже его использовать, чем нет, скорее всего. Проверьте (enable_seqscan = off и т.п.), генерируется ли такой план в принципе. Если да, оценку Вы там увидите. Если вдруг не генерируется, надо смотреть подробнее.
как посмотреть генерируется ли такой план в принципе? enable_seqscan = off - пробовал не помогло там 110М таблица и в выборку попадает 300к - может поэтому планировщик считает что проще просканировать
Я же написал "и т.п.", то есть возможно, что понадобится запретить ещё какие-то варианты. И что такое "не помогло", т.е. какой план был выбран?
Seq Scan on core_zreportcurrencypart (cost=0.00..3069364.98 rows=12730378 width=478) Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text)) фильтр (( добавил простой индекс CREATE INDEX core_zreportcurrencypart_currency_idx ON public.core_zreportcurrencypart USING btree (currency) и на простой запрос SELECT * FROM core_zreportcurrencypart WHERE currency = 'BYN' ; все равно сканирование и фильтр Seq Scan on core_zreportcurrencypart (cost=0.00..3069364.98 rows=107746420 width=478) Filter: ((currency)::text = 'BYN'::text)
Значит, "set enable_seqscan = off" Вы так и не включили. Иначе это выглядело бы как-то так: Seq Scan on core_zreportcurrencypart (cost=10000000000.00..10000000091.00 ...
Да и вообще, покажите \d таблицы, что мы гадаем? ;)
Seq Scan on core_zreportcurrencypart (cost=10000000000.00..10003069364.98 rows=12730378 width=478) Filter: ((amount_in_byn IS NULL) AND ((currency)::text <> 'BYN'::text)) на некоторых запросах+индексах сработало. стало ли быстрее - буду еще разбираться. конкретно этот уперся
отличная идея. есть над чем подумать.
Текстом!
Обсуждают сегодня