我有一个带有多个 ctes 的雪花查询,并使用 Talend 作业插入到表中。执行查询需要 90 多分钟。它是多个级联的 ctes,一个调用另一个,另一个调用另一个。
我想提高查询的性能。这就像1000行代码,我不能在这里粘贴。当我检查配置文件时,它显示了所有减慢查询的窗口函数和聚合函数。
例如,最慢的是,
ROW_NUMBER() OVER (PARTITION BY LOWER(S.SUBSCRIPTIONID)
ORDER BY S.ISROWCURRENT DESC NULLS FIRST,
TO_NUMBER(S.STARTDATE) DESC NULLS FIRST,
IFF(S.ENDDATE IS NULL, '29991231', S.ENDDATE) DESC NULLS FIRST)
需要 7.3% 的时间。您能否提出一种提高查询性能的替代方法?