Производительность Курсора в SQL Server? - PullRequest
0 голосов
/ 01 ноября 2011

В SQL Server я использую курсор в моем процессе, но это снижает производительность.

Есть ли альтернативный метод?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Это действительно зависит от того, чего вы пытаетесь достичь. В ваш вопрос должна быть включена дополнительная информация (и код), но ... CTE (общие выражения таблиц) часто можно использовать вместо курсоров. Вот еще одна ссылка на статью о том, как (и как) избегать использования курсоров. И хороший. чистый пример с поста форума.

0 голосов
/ 01 ноября 2011

Есть несколько альтернатив курсорам, но в зависимости от того, что происходит внутри вашего курсора и от того, как вы его сконструировали, возможно, причина в том, что ваша процедура медленная.

Если вы предоставите некоторый SQL, мы могли быЛучше оценить проблему, с которой вы столкнулись.

Один из способов устранения курсоров - использовать цикл:

DECLARE @Index int = 1
DECLARE @Count int
SELECT @Count = COUNT(1) FROM YourSource
WHILE @Index < @Count
BEGIN
    -- e.g. Select data from your source whose ID = @Index into 
    -- a table variable or local variables

    -- Do work with your data

    SET @Index = @Index + 1
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...