小编Ind*_*art的帖子

游标SQL Server很慢

我不知道为什么这么慢

DECLARE kursor CURSOR FOR
    SELECT mediatime, ShortDate, MediaDateID, TimeID 
    FROM DateTimeMCross

DECLARE @mediatime INT, @ShortDate DATE, @MediaDateID INT, @TimeID INT, @tmpDate DATE

SET @mediatime = 0;

OPEN kursor

FETCH NEXT FROM kursor INTO @mediatime, @ShortDate, @MediaDateID, @TimeID

WHILE @@FETCH_STATUS = 0
BEGIN
    /*SET @tmpDate = (select DATEADD(day,-1,@shortDate))*/
    IF @mediatime >= 2400
    BEGIN
        UPDATE DateTimeMCross
        SET DateTimeMCross.newMediaDateID = 2/*(SELECT     YEAR(@tmpDate) * 10000 + MONTH(@tmpDate) * 100 + DAY(@tmpDate))*/
        WHERE DateTimeMCross.MediaDateID = @MediaDateID 
          AND DateTimeMCross.TimeID = @TimeID
    END
    ELSE IF @mediatime …
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance cursor while-loop

0
推荐指数
1
解决办法
283
查看次数

标签 统计

cursor ×1

performance ×1

sql ×1

sql-server ×1

while-loop ×1