【发布时间】:2014-08-09 13:53:58
【问题描述】:
我在 SQL Server 中有 16000 行,我想将文档编号物理分配给记录并使用以下代码,当我的记录为 8000 时它工作正常但很懒,但当记录增加到 16000 时它给我一个超时错误,请帮我提高查询的性能???
declare @NewDoc int;
set @NewDoc=0
declare t1_cursor cursor dynamic for select documentheaderid,documentnumber from Accounting.DocumentHeader where FinancialPeriodFK=@FinancialPeriodFK and Date>=@FromDate and Date<=@ToDate order by Date
open t1_cursor
fetch next from t1_cursor
while(@@fetch_status=0)
begin
set @NewDoc=@NewDoc+1;
update Accounting.DocumentHeader set DocumentNumber=@NewDoc where current of t1_cursor
fetch next from t1_cursor
end
close t1_cursor
deallocate t1_cursor
【问题讨论】:
-
@marc_s 你所说的基于集合的操作是什么意思?
-
基于集合的意思是避免 RBAR(逐行痛苦)处理——比如使用游标或while循环。你告诉 SQL Server 你想要什么 - 但没有详细说明如何去做,让 SQL Server 决定如何为你解决问题
标签: sql-server-2008 query-performance sqlperformance