Рассмотрим следующий SQL (SQL Server 2008) заявление:Как оператор WITH хранит набор записей для запроса выбора?
WITH MyResult AS
(
SELECT
Name,
Row_ID AS ORD
FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5
ли MyResult сохраненную во временной таблице в базе данных TempDb? Или он делает что-то еще?
Мы оптимизируем некоторые запросы и будет LKE, чтобы лучше понять, с высказываниями (внутренне), чтобы помочь производительностям калибровочных и т.д.
Благодарности
«... временный набор результат ...» вызвал наше мышление, что временный набор результатов в настоящее время хранится где-то временно (т.е. Tempdb.) – Russell
@Russell - Да, я могу видеть, где формулировка немного облачно на этом. Используя CTE сам по себе, SQL Server не создает временную таблицу. Конечно, как и любой запрос, CTE или нет CTE, он может быть выгружен в tempdb в зависимости от того, что происходит. Но это не относится к CTEs – AdaTheDev