数仓性能调优:row_number() over(p)-rn=1性能瓶颈发现和改写套路
💡
原文中文,约2000字,阅读约需5分钟。
📝
内容提要
本文介绍了在GaussDB中使用row_number() over(p)-rn=1时的性能瓶颈和改写方法。通过去除窗口函数,优化了分类汇总和明细数据的关联流水执行。改写后的执行计划显示,总体执行时间缩短了约480ms。
🎯
关键要点
- 本文讨论了GaussDB中使用row_number() over(p)-rn=1时的性能瓶颈及其改写方法。
- 改写场景为子查询中使用row_number()进行分类排序并筛选最大值的情况。
- GaussDB的SQL执行通常是流式的,但窗口函数会导致性能瓶颈,因为需要先完成前一个算子的结果集。
- 通过去除窗口函数,可以优化分类汇总与明细数据的关联流水执行。
- 改写前的SQL使用了窗口函数,改写后通过聚合函数MAX进行优化。
- 改写后的执行计划显示,总体执行时间缩短了约480ms,尽管某些算子的执行时间仅减少了200ms。
🏷️
标签
➡️