这个问题已经在这里有一个答案:
- SQL Server缓存问题 5个回答
当我运行一个查询会在SQL Server缓存的结果?
这是因为 :当我运行下面的查询:
SELECT id
FROM Foo
WHERE Foo.Name LIKE '%bar%'
查询为一日时间为40秒运行一次。
但在第二次运行 只需要几秒钟 。
这是因为执行计划以某种方式缓存或实际数据进行缓存,这样我可以在第二次运行速度更快找回?
这个问题已经在这里有一个答案:
当我运行一个查询会在SQL Server缓存的结果?
这是因为 :当我运行下面的查询:
SELECT id
FROM Foo
WHERE Foo.Name LIKE '%bar%'
查询为一日时间为40秒运行一次。
但在第二次运行 只需要几秒钟 。
这是因为执行计划以某种方式缓存或实际数据进行缓存,这样我可以在第二次运行速度更快找回?
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还要求将内存缓存,直到最大(配置或物理最大),然后最老的页刷新。