500万行单表查询,sum over 跑不出结果

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】5.1,tiflash也试过
SELECT t1.id,
ROW_NUMBER() OVER(PARTITION BY t1.storetype ORDER BY t1.sale desc) as rk,
sum(t1.sale) OVER(PARTITION BY t1.storetype ORDER BY t1.sale desc rows between unbounded preceding and current row) as saleamt_order
from Temp_2021pool t1


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

1 个赞

注销掉 sum(t1.sale) OVER(PARTITION BY t1.storetype ORDER BY t1.sale desc rows between unbounded preceding 执行,10多秒就完成,主要时间在网络传输数据,sum() over() 有什么坑么?:
SELECT t1.id,
ROW_NUMBER() OVER(PARTITION BY t1.storetype ORDER BY t1.sale desc) as rk,
– sum(t1.sale) OVER(PARTITION BY t1.storetype ORDER BY t1.sale desc rows between unbounded preceding and current row) as saleamt_order
from Temp_2021pool t1

1 个赞

麻烦发一下执行计划

1 个赞

顶楼上,此类问题带explain analyze的执行计划,可能就分析出原因了。
盲猜一下,可能会有内存不足,溢出磁盘的动作。

2 个赞

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。