千万数据 mssql2005 select count(*) 很慢,求高人指点

2024-12-16 08:34:18
推荐回答(1个)
回答1:

你这样弄肯定慢,先取回一个记录集,再用用指针一行行扫描,再返回数据库查询,查询的结果还要返回客户端,客户端再根据情况进行UPDATE操作。19W的记录表,你这样来回传了3次,还取了个大数据集到客户端操作。

把你的需要做的操作说清楚;看你的说法,我理解为你在数据表里新建了一个字段,然后想把楼号的记录全补上吧。
把你的表结构给一个出来,包括主键(ID应该就是主键吧,是不是自动增长型),新闻ID字段(感觉你这个新闻ID好象是ID的外键)的意义,我把查询给你写出来

如果满足我上面说的,用这个查询看看是不是你要的结果
SELECT Id, 新闻ID ,楼号=(select count(*) from tablename a where a.新闻ID=b.新闻ID and a.id<=b.id)
FROM tablename b
可以加个order by 新闻ID,楼号看看

如果是的话 直接用下面的update语句一次搞定
update tablename set 楼号=n.LH
from tablename as c ,
(SELECT Id, 新闻ID ,LH=(select count(*) from tablename a where a.新闻ID=b.新闻ID and a.id<=b.id)
FROM tablename b) as n
where c.id=n.id