Насколько я понимаю, табличные выражения не сохраняются, что означает, что каждая ссылка на него во внешнем коде является повторным вызовом определения. Здесь табличные переменные/временные таблицы вступают в изображение, сохраняя таблицу и избегая повторной оценки каждый раз. Мне кажется, что таблицы переменных/временные таблицы - лучший выбор, чтобы избежать повторения. Я сделал anology программирования, где вместо вызова методаТабличное выражение и переменная таблицы/временная постоянная таблица
myMethod()
каждый раз, я предпочел бы присвоить переменной к нему
int res = myMethod()
избежать вызова MyMethod() несколько раз. myMethod()
аналогичен табличному выражению, а res - табличной переменной/временной таблице.
Так почему бы нам использовать табличные выражения? В каких сценариях мы должны использовать табличные выражения вместо двух других? И наоборот?
спасибо.
КТР добавит рекурсивные возможности, а также сделать код более удобным для чтения, чем производные таблицы для многих людей , –
Интересное мнение http://sqlserverplanet.com/design/ctes-vs-temp-tables-an-opinion –