希望你一切都好。我在 sql server 查询中有一些问题。
我想更新一个有 534,000 行的表中的记录。如果我创建一个while循环来更新所有记录,那么它需要时间。
那么我应该为更新记录创建一个游标。在此之后,我使用 Fetch 创建了一个用于更新的游标。这个游标在 10,000 行中快速完成更新过程,但是当我使用超过 30,000 行的表时,执行查询需要 5 分钟。我不知道是什么问题。
这是我的代码
DECLARE @RNo INT --Declaring the Variable @id
DECLARE @id INT --Declaring the Variable @id
set @RNo=1
DECLARE @MyCursor CURSOR -- Declaring the Cursor
SET @MyCursor = CURSOR --Assigning the cursor
FOR
SELECT Col1 FROM MyTable --Query related to Cursor
for update of Col2
OPEN @MyCursor -- Opening the Created cursor
FETCH NEXT FROM @MyCursor --Retrieving the record one by one
INTO @id --Assigning the value in declared Variable
WHILE @@FETCH_STATUS = 0
BEGIN
update MyTable
set Col2=@RNo
where current of @MyCursor
set @RNo=@rno+1
print @id
FETCH NEXT
FROM @MyCursor INTO @id
END
CLOSE @MyCursor -- Closing the Cursor
DEALLOCATE @MyCursor -- Deallocating the Cursor Memory
注意:我的查询使用正确的数据执行,但问题是它需要 5 分钟,我只想在 10 秒内执行此查询。
提前致谢