我有一个表(postgresaurora),有7200万行,每行大约10万行 as_at_date
.
我希望能够选择所有数据 as_at_date
值,即月末的值。例如,30/4/2018、31/12/2019等,并返回所有10万*n行。
实际上,我用这个来处理以下查询;
SELECT *
FROM schema.table
WHERE as_at_date >= '2019-07-01'
AND as_at_date IN
(
SELECT max(as_at_date)
FROM schema.table
GROUP BY date_part('month', as_at_date), date_part('year', as_at_date)
)
然而,内部select只是为了获取外部select语句的max as\u at\u dates列表,它占用了95%以上的执行时间(大约是31秒中的30秒)。
有没有一个更理想的方法让月底的日期加快这一点?
谢谢你的帮助。
1条答案
按热度按时间siotufzp1#
一种方法是:
也就是说,任何一个月的最后一天都具有这样的属性:第二天是一个月的第一天。