SUM(x.amount) AS expenses
FROM mailing_brand AS mb
JOIN expense x ON (x.mailing_brand_id = mb.id)
WHERE
mb.brand_id = 4
AND mb.is_deleted = FALSE
AND mb.promocode_id IS NOT NULL
AND x.billed_at >= NOW() - interval '1 month'
AND x.billed_at <= NOW()
AND x.brand_id = 4
GROUP BY mb.promocode_id;
на expense есть индексы на (billed_at), и на (brand_id, billed_at). Почему база не выбирает второй?
https://explain.depesz.com/s/Ami0
не то чтобы это очень важно, просто интересно.
А что это у вас такие большие ошибки в оценках на, вроде бы, простых предикатах (может, ANALYZE не было)? Что, если сделать VACUUM ANALYZE по таблицам?
Обсуждают сегодня