Временные таблицы SQL-сервера и курсоры - PullRequest
20 голосов
/ 31 декабря 2010

В хранимых процедурах SQL Server, когда использовать временные таблицы и когда использовать курсоры. какой вариант лучше всего подходит?

Ответы [ 2 ]

20 голосов
/ 31 декабря 2010

Если возможно избегать курсоров, таких как чума. SQL Server основан на множестве - все, что вам нужно делать в режиме RBAR (строка за агонизирующей строкой), будет медленным, медленным и противоречит основным принципам работы SQL.

Ваш вопрос очень расплывчатый - на основании этой информации мы не можем точно сказать, что вы пытаетесь сделать. Но основная рекомендация остается: когда бы ни было возможно (и это возможно в подавляющем большинстве случаев), используйте основанные на множестве операции - SELECT, UPDATE, INSERT и объединения - не навязывайте свои процедурные соображения SQL Server - это не лучший путь.

Так что, если вы можете использовать операции на основе множеств для заполнения и использования временных таблиц, я бы предпочел этот метод каждый раз вместо курсоров.

7 голосов
/ 31 декабря 2010

Курсоры работают построчно и очень плохо работают.Почти во всех случаях они могут быть заменены улучшенным кодом на основе наборов (хотя обычно это не временные таблицы)

Временные таблицы могут быть хорошими или плохими в зависимости от объема данных и того, что вы делаете с ними.Они обычно не являются заменой курсора.

Предлагаем вам прочитать это: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

...