Как оператор с оператором хранит набор записей для запроса SELECT?

StackOverflow https://stackoverflow.com/questions/3108419

  •  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 похож на полученную таблицу в том смысле, что она не хранится как объект и длится только на протяжении всего запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top