по Postgres.
Проблема такая. Есть 2 идентичных партиции (200 миллионов строк ~ 40gb каждая), с одинаковыми индексами. Планировщик на одном и том же запросе использует разные части индекса
-> Index Scan using partition_2016_04_store_country_date_idx on partition_2016_04 (cost=0.57..8.59 rows=1 width=29) (actual time=6813.768..6813.768 rows=0 loops=1)
Index Cond: ((store = 5) AND (country = 'CO'::bpchar))
Filter: (united_application_id = 205938)
Rows Removed by Filter: 1034968
-> Index Scan using partition_2016_05_pkey on partition_2016_05 (cost=0.57..145.36 rows=35 width=38) (actual time=0.615..0.615 rows=0 loops=1)
Index Cond: ((store = 5) AND (country = 'CO'::bpchar) AND (united_application_id = 205938))
Первый запрос фильтровался на диске. Второй по индексу. Вопрос, куда копать, какие могут быть причины?
Пересчитай индексы там где результат тебе не нравится.
Похоже на сбитую статистику по проблемной партиции, попробуйте vacuum analyze.
Обсуждают сегодня