Redshift:WHERE时间戳> str与子查询性能缓慢

时间:2018-03-08 03:55:47

标签: sql amazon-redshift

我有一个表,我希望根据我计算的中间CTE的最大时间戳值使用where子句进行过滤。为什么当我将它与静态日期字符串进行比较时,它执行速度很快,但是当我将它与子查询进行比较时,它会进行爬行?

快速:

WHERE tstamp > '2018-03-07' --This is fast

WHERE tstamp > (SELECT MAX(tstamp) FROM some_temp_cte) --This is really really slow

你们有什么关于加快速度的提示吗?感谢。

1 个答案:

答案 0 :(得分:1)

有些数据库倾向于在每行的whereselect子句中重新执行子查询。我建议将逻辑移到from子句:

FROM . . . CROSS JOIN
     (SELECT MAX(tstamp) as max_tstamp FROM some_temp_cte) tt
WHERE tstamp > max_tstamp