Рассмотрите следующий оператор SQL (SQL Server 2008):
WITH MyResult AS
(
SELECT
Name,
Row_ID AS ORD
FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5
MyResult хранится во временной таблице в tempdb? Или это делает что-то еще?
Мы оптимизируем некоторые запросы и были бы lke для лучше понимания операторов WITH (внутренне), чтобы помочь измерить производительность и т.д.
Спасибо
Нет, согласно этой статье MSDN
... CTE - это конструкция на уровне языка. конструкция - это означает, что SQL Server не создает внутренние временные или виртуальные таблицы...
А также, как упоминается здесь:
Общее табличное выражение (CTE) может быть можно рассматривать как временный набор результатов который определяется в пределах выполнения в рамках выполнения одного SELECT, INSERT, UPDATE, DELETE или CREATE VIEW оператора. CTE похож на производной таблице, поскольку она не хранится как объект и существует только в течение время выполнения запроса.