Временные таблицы SQL-сервера против курсоров

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

Предложите вам прочитать следующее: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them