Пример CTE, чтобы доказать, что он лучше, чем Курсор - PullRequest
0 голосов
/ 09 декабря 2010

Я прочитал, что CTE лучше, чем курсор. Но я не могу найти простой ясный пример, который может доказать это. Я новичок в Sql Server 2005, и для его понимания мне нужен простой пример, в котором мы храним значение через CTE и обрабатываем его один за другим.

Ответы [ 2 ]

0 голосов
/ 21 июля 2012

CTE дает более быстрый результат в рекурсивном сценарии.Результат CTE многократно используется для получения окончательного набора результатов.Таким образом, поскольку вы взяли свое условие where или подзапрос в CTE, это определенно покажет улучшение производительности.Хотя поток выполнения курсоров является синхронным (он выполняется один за другим), он должен занимать больше времени.Ссылка: http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

Просто обратите внимание, что во многих сценариях временные таблицы дают лучшую производительность, чем CTE, поэтому вам следует попробовать также и временные таблицы.
Ссылка: http://social.msdn.microsoft.com/Forums/en/transactsql/thread/d040d19d-016e-4a21-bf44-a0359fb3c7fb

0 голосов
/ 09 декабря 2010

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

...