簡體   English   中英

選項重新編譯使查詢快速 - 好還是壞?

[英]Option Recompile makes query fast - good or bad?

我有兩個SQL查詢,每個查詢大約2-3個INNER JOINS。 我需要在他們之間做一個INTERSECT。

問題是,個人查詢工作速度很快,但在交叉后總共花費大約4秒。

現在,如果我在整個查詢的末尾放置一個OPTION(RECOMPILE),那么查詢工作得非常好,幾乎可以立即快速返回!

我理解選項recopile會強制重建執行計划,所以如果我的管理員查詢需要4秒鍾更好或者現在重新編譯,我會感到困惑,但是0秒更好。

指定WITH RECOMPILE SQL Server不為此存儲過程緩存計划,每次執行存儲過程時都會重新編譯存儲過程。

每當第一次在SQL Server中運行存儲過程時,它都會進行優化,並在SQL Server的內存中編譯和緩存查詢計划。 每次在緩存后運行相同的存儲過程時,它將使用相同的查詢計划,從而無需在每次運行時優化和編譯相同的存儲過程。 因此,如果您需要每天運行1000次相同的存儲過程,則可以節省大量時間和硬件資源,並且SQL Server不必像以前那樣努力工作。

您不應該使用此選項,因為通過使用此選項,您將失去通過使用存儲過程替換SQL查詢所獲得的大部分優勢。

而不是回答你問的問題,這是你應該做的:

更新統計信息:

EXEC sp_updatestats

如果這不起作用,請重建索引。

如果這不起作用,請查看OPTIMIZE FOR

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM