Как оператор с оператором хранит набор записей для запроса SELECT?
-
29-09-2019 - |
Вопрос
Рассмотрим следующее оператор 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? Или это делает что -то еще?
Мы оптимизируем некоторые запросы и должны были бы лучше понять заявления (внутренне), чтобы помочь оценить производительность и т. Д.
Спасибо
Решение
Нет, согласно Эта статья MSDN
... CTE-это конструкция на уровне языка, что означает, что SQL Server не создает внутреннюю температуру или виртуальные таблицы ...
А также, как упомянуто здесь:
Общее выражение таблицы (CTE) может рассматриваться как временный набор результатов, который определяется в рамках выполнения одного выбора, вставки, обновления, удаления или создания оператора представления. CTE похож на полученную таблицу в том смысле, что она не хранится как объект и длится только на протяжении всего запроса.