数仓性能调优: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。
🏷️

标签

➡️

继续阅读