SQL Server: производительность курсора - PullRequest
0 голосов
/ 20 сентября 2011

Я использую курсор в хранимой процедуре, и нет другого пути, кроме курсора.

Я вставил свой сценарий сюда. Я хочу улучшить производительность этого курсора. Немного предыстории. Я передаю «имя» и «действие» и курсор вызывает различные хранимые процедуры в ответ. Я передал другой параметр (ID) во всех этих хранимых процедурах. Пожалуйста, улучшите производительность.

ALTER PROCEDURE dbo.Driver_sp
AS

TRUNCATE TABLE Driver_tbl

INSERT INTO Driver_tbl (ID,Name,Action,vipbatchid,processseq)
SELECT ID,Name,Action,batchid,ProcessSeq
FROM pcis_tbl


DECLARE @name varchar(20),
        @action varchar(20),
        @ID bigint

DECLARE cur CURSOR LOCAL FOR
    SELECT id,name,action FROM Driver_tbl
    ORDER BY processseq

OPEN cur  

FETCH NEXT FROM cur INTO @id, @name,@action

WHILE @@FETCH_STATUS = 0

BEGIN

   if (@name = 'A' and @action = 'Update')  
   BEGIN exec A_sp @ID END 
     else 
     if (@name = 'B' and @action = 'Update') 
     BEGIN exec B_sp @ID END 
       else
       if (@name = 'C' and @action = 'Update')
       BEGIN exec C_sp @ID END 
         else 
         if (@name = 'D' and @action = 'Update') 
         BEGIN exec D_sp @ID END 


fetch next FROM cur INTO @id, @name,@action

END
CLOSE cur
DEALLOCATE cur

Спасибо !!

1 Ответ

4 голосов
/ 20 сентября 2011

Предполагается, что вы используете TSQL, измените объявление CURSOR на

DECLARE cur CURSOR FAST_FORWARD FOR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...