这么精简的Sql处理5万数据都要10几分钟?!

来源:百度知道 编辑:UC知道 时间:2024/05/23 13:01:15
我感觉这个Sql再优化也就这样了 因为功能本来就不复杂。各位高手给看看吧,是那里出的问题 谢谢!

Declare @KsDocNum Int
Declare @MinKsId int
Declare @maxKsId Int
Select @MinKsId = Min(KsId) From Hos_Ks
Select @MaxKsId = max(KsId) From Hos_Ks
Set NoCOunt On
While @MinKsId<=@MaxKsId
Begin
If Exists(Select KsId From Hos_Ks Where KsId=@MinKsId)
Begin
Select @KsDocNum=Count(DocID) From Hos_Doc Where KsId=@MinKsId
UpDate HOs_Ks Set KsDocNum = @KsDocNum WHere KsId=@MinKsId
End
Set @MinKsId = @MinKsId + 1
End

--把循环改为直接更新,查看两个表的KsId列是否有索引,没有时加上索引

update a
set KsDocNum=b.KsDocNum
from HOs_Ks a
inner join (select KsId,count(DocID) as KsDocNum from Hos_Doc group by KsId)b on a.KsId=b.KsId

不管什么语句,5万条数据最多2分钟

在where条件用到的字段 KsId 建立索引可能会提高效率