是否有明確的命令左右執行 SQL服務器不是「緩存」我的查詢結果?我可以明確強制執行SQL Server嗎?不是爲了緩存我的查詢結果集?
我正在解決性能問題,當第二次調用完成一個長查詢時需要太快,爲了比較查詢性能當我進行修改時,我希望不會發生這種行爲。
這可能嗎?
是否有明確的命令左右執行 SQL服務器不是「緩存」我的查詢結果?我可以明確強制執行SQL Server嗎?不是爲了緩存我的查詢結果集?
我正在解決性能問題,當第二次調用完成一個長查詢時需要太快,爲了比較查詢性能當我進行修改時,我希望不會發生這種行爲。
這可能嗎?
您確定您指的是查詢結果與執行計劃的緩存嗎?
選擇不高速緩存執行計劃可以在使用對象層級完成:
WITH RECOMPILE
你做錯了。使用精確的測量代替:啓用SET STATISTICS IO ON
和SET STATISTICS TIME ON
,然後比較查詢。看看你的查詢中的邏輯讀數的數量,這將是提高性能的驅動因素。
如果您強制使用冷藏緩存(這是可能的),您正在針對錯誤的情況進行優化,因爲大多數時間您的生產服務器將被預熱並提供緩衝池中的數據。
另外,您看到第一次查詢驅動的重要IO的事實清楚地表明瞭表掃描。查詢重寫可能會有所幫助,但您真正的問題更可能是缺少索引,這就是您應該關注的內容。