Есть ли разница в производительности между CTE, подзапросом, временной таблицей или табличной переменной?

В этом отличноТАК вопрос, различия междуCTE а такжеsub-queries были обсуждены.

Я хотел бы специально спросить:

При каких обстоятельствах каждое из следующих действий более эффективно / быстрее?

CTE Sub-Query Temporary Table Table Variable

Традиционно я использовал многоtemp tables в разработкеstored procedures - поскольку они кажутся более читабельными, чем множество переплетенных подзапросов.

Non-recursive CTEs очень хорошо инкапсулируют наборы данных и очень удобочитаемы, но есть ли конкретные обстоятельства, когда можно сказать, что они всегда будут работать лучше? или дело в том, что приходится постоянно искать разные варианты, чтобы найти наиболее эффективное решение?

EDIT

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

Ответы на вопрос(4)

Ваш ответ на вопрос