2013-04-05 118 views
13

當我運行查詢時,SQL Server是否緩存結果?SQL Server CACHES查詢結果?

因爲: 當我運行下面的查詢:

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

查詢爲一日一次40秒運行。

但是在第二輪運行它只需要幾秒鐘

這是因爲執行計劃以某種方式被緩存或實際上數據被緩存,以便我可以在第二次運行時更快地檢索它?

+0

http://technet.microsoft.com/en-us/library/cc293623.aspx – Habib 2013-04-05 05:50:31

+0

這裏已經有類似的問題在這裏:http://stackoverflow.com/questions/2002576/sql-server-cache -題 – wilsjd 2013-04-05 05:52:14

回答

17

SQL Server不會緩存查詢結果,但會緩存它在內存中讀取的data pages。然後將這些頁面的數據用於生成查詢結果。

你可以很容易地看到,如果數據從內存或磁盤設置

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還會聲稱用於緩存的內存,直到達到最大值(配置的或物理最大值),然後刷新最舊的頁面。