sql 性能优化

卡尔的面包 2011-10-17 10:39:30
temp 表结构(id,kind,number) id为自增字段.

select id,
(select sum(number)
from temp t2 where t2.kind = t1.kind and t2.id < t1.id
) as number
from temp t1

想优化这条语句,请大侠们指导下.谢谢. 因为数据量很大时,不可能每条语句都去将前面的数据进行累加哦.这样效率很慢...

真心的谢谢大家...
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaobn_cn 2011-10-18
  • 打赏
  • 举报
回复
SELECT ID,KIND,NUMBER,SUM(NUMBER) OVER(PARTTION BY KIND ORDER BY KIND,NUMBER) - NUMBER FROM TEMP;

使用分析函数来求连续累加值,然后再减去当前行自己的值。
heller2007 2011-10-18
  • 打赏
  • 举报
回复
可以考虑用存储过程
NLP爱好者 2011-10-17
  • 打赏
  • 举报
回复
楼主用个分析函数吧
卡尔的面包 2011-10-17
  • 打赏
  • 举报
回复
比如
id kind number
1 a 10
2 a 15
3 b 10
4 a 20
5 b 5

----->查询出结果(结果顺序可以乱,比如可以kind或者id分组等)
id kind number
1 a 0
2 a 10
3 b 0
4 a 25
5 b 10

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧