2012-02-09 4 views
0

Если я запускаю следующий запрос несколько раз в SQL Server 2008, он кэширует результат внутреннего запроса (мой сложный запрос выбора) после первого раза?Кэширование подзапросов SQL Server 2008?

Или он выполняет этот запрос каждый раз с новыми значениями n и m?

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY x.id) AS rowID 
    FROM (*My complicated select Query* ORDER BY id) x 
) y WHERE y.rowID BETWEEN n AND m 
+1

Я не могу себе представить, что это кеширование результатов. Вероятно, планы запросов. Но что, если таблица изменяется между выполнением запроса? Он не может безопасно кэшировать результирующий набор. – Blorgbeard

ответ

1

Это будет зависеть от целого ряда факторов, в том числе настройки для параметризации (простой/вынужденный и т.д.), то «оптимизировать для специальных рабочих нагрузок» настройки, объем памяти, сложности запроса, что находится в кэше, как часто планируются циклические выходы и т. д. Заметьте, что существует большая разница между «кэшированием результата» (чего не происходит) и «кэшированием и повторным использованием плана» (что может). Кэширование результатов на самом деле не имеет смысла, если ваша база данных (или файловая группа, в которой эта таблица не была создана) была установлена ​​только для чтения.

Смежные вопросы