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

В этом превосходном SO-вопросеобсуждались различия между CTEи подзапросами.

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

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

  • CTE
  • Подзапрос
  • Временная таблица
  • Переменная таблицы

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

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


РЕДАКТИРОВАТЬ

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

199
задан DineshDB 27 March 2018 в 19:46
поделиться