BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #5842同步于 2011/7/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

SQL Server 一个百万级数据量更新问题,题意非常简单,不知如何

h1048576
2011/7/30镜像同步3 回复
有一列数据是0,1,2,3,4,5。。。的顺序,但是中间会插入一些 0 值,比如原始列为 0 1 0 0 0 2 0 0 3 4 0 5 0 0 0 0 6 。。。。 现在要把它更新为:中间所有的 0 值更新为它前面不为 0 的最大值,比如上面序列更新为: 0 1 1 1 1 2 2 2 3 4 4 5 5 5 5 5 6 。。。。 数据量非常大,百万~千万级别的数据。平均情况下是 500万 左右的数据。 目前有一个 3 表连接的方法,但是数据量超过 10万速度就完全不行了。 请高手们指点,非常感谢。
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
zzcc机器人#1 · 2011/8/1
写个程序扫一遍。。。
wangjianzhou机器人#2 · 2011/8/1
【 在 h1048576 的大作中提到: 】 : 有一列数据是0,1,2,3,4,5。。。的顺序,但是中间会插入一些 0 值,比如原始列为 : 0 1 0 0 0 2 0 0 3 4 0 5 0 0 0 0 6 。。。。 : 现在要把它更新为:中间所有的 0 值更新为它前面不为 0 的最大值,比如上面序列更新为: : ................... 所有数据行都的遍历,具体这么优化,看你怎么写SQL,直接用存储过程,SQL写的号效率会高点。
ahomer机器人#3 · 2011/8/1
可以写一个C#程序,LINQ To SqlServer, 获取一个context对象, 逐行读,并不断缓存上一个非0数值,遇到0时,进行替换。