Подтвердить что ты не робот

Результаты SQL Server CACHES Query?

Когда я запускаю запрос, SQL Server кэширует результаты?

Поскольку: Когда я запустил следующий запрос:

SELECT id
FROM Foo
WHERE Foo.Name LIKE '%bar%'

Запрос выполняется в течение 40 секунд в первый раз.

Но при втором прогоне требуется всего несколько секунд.

Является ли это потому, что план выполнения каким-то образом кэшируется или фактически кэшируется данные, чтобы я мог получить его гораздо быстрее во время второго прогона?

4b9b3361

Ответ 1

SQL Server не кэширует результаты запроса, но кэширует страницы данных которые он читает в памяти. Затем данные с этих страниц используются для создания результата запроса.

Вы можете легко увидеть, были ли данные прочитаны из памяти или с диска, установив

SET STATISTICS IO ON

Что возвращает следующую информацию о выполнении запроса

Table 'ProductCostHistory'. Scan count 1, logical reads 5, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Разница между логическими и физическими чтениями - это данные, считанные из памяти.

SQL Server также будет требовать память для кэширования, пока не будет достигнут максимальный (сконфигурированный или физический максимум), а затем самые старые страницы будут очищены.