首页 > 解决方案 > 为什么在 Redshift 上使用窗口函数时查询计划器成本会出现跳跃?

问题描述

我在 Amazon Redshift 中遇到了查询计划程序的一个奇怪行为:在某些情况下,例如使用窗口函数时,成本会增加 10000。通常是在“网络”步骤之后。

我的问题是,有时我确实需要使用窗口函数,并且比较备选方案之间的成本变得不可能,因为查询的运行时间之间的比率与其成本的比率不成比例(如果你看一下它是相对成比例的没有乘以 10000 的窗口函数的成本)。

这是一个简化的示例,比较这两个查询:

-- Query #1: running time 2m 48s, cost 1000017902760.42
explain
select 
    first_value(timestamp) over (order by timestamp rows 
        between unbounded preceding and unbounded following)
from table_with_timestamps as l
limit 1
;
-- Query #2: running time 10 sec, cost 1549471.30
explain
select 
    min(timestamp)
from table_with_timestamps

有人可以解释更多关于优化窗口功能的信息,以及我不清楚的这个“网络”步骤吗?

谢谢。

标签: amazon-redshiftsql-optimization

解决方案


推荐阅读