pen*_*ake 18 sql t-sql sql-server caching sql-server-2008-r2
当我运行查询时,SQL Server会缓存结果吗?
因为:当我运行以下查询时:
SELECT id
FROM Foo
WHERE Foo.Name LIKE '%bar%'
Run Code Online (Sandbox Code Playgroud)
查询第一次运行40秒.
但在第二次运行时只需几秒钟.
这是因为执行计划是以某种方式缓存的,或者实际上数据是否被缓存,以便我可以在第二次运行时更快地检索它?
Fil*_*Vos 24
SQL Server不会缓存查询结果,但会缓存它在内存中读取的数据页.然后使用来自这些页面的数据来产生查询结果.
您可以通过设置轻松查看数据是从内存还是从磁盘读取
SET STATISTICS IO ON
Run Code Online (Sandbox Code Playgroud)
返回有关查询执行的以下信息
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.
Run Code Online (Sandbox Code Playgroud)
逻辑读取和物理读取之间的区别是从内存中读取的数据.
SQL Server还将声明内存用于缓存,直到达到最大(配置或物理最大值),然后刷新最旧的页面.
| 归档时间: |
|
| 查看次数: |
22405 次 |
| 最近记录: |