Ответ 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 также будет требовать память для кэширования, пока не будет достигнут максимальный (сконфигурированный или физический максимум), а затем самые старые страницы будут очищены.