@beduin01

Почему PostgreSQL не использует индексы?

Есть запрос:

SELECT region,
       COUNT(*) as total,
       COUNT(*) FILTER (WHERE t1.insert_status = 'success' ) as completed,
       COUNT(*) FILTER (WHERE t1.insert_status IS NULL AND t1.insert_status IS NULL ) as waiting,
       COUNT(*) FILTER (WHERE t1.insert_status = 'failed' ) as insert_failed
FROM xml_files_2 t1
WHERE t1.section_name = 'payments' AND
      t1.processed_date >='2010-01-28' AND t1.processed_date <='2021-08-28'        
GROUP BY region;


В тестовой выборке 300 тыс файлов. Запрос выполняется за 0.5 секунды.
Выставляю одиночные индексы для всех полей запроса. Запрос продолжает выполняться 0.5 секунды.
Делаю композитный индекс в который входят все поля запроса -- время выполнение падает до 0.22 секунд.

Вопрос. Почему с индексами и без разницы никакой? И почему только композитные индексы сработали?

Если что данные на очень быстром SSD накопителе. Может ли быть так, что PG из-за этого индексы не использует?
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Бесполезно разбираться вслепую. Сделайте EXPLAIN запроса
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы