3 回答

TA貢獻2019條經(jīng)驗 獲得超9個贊
有時候使用OPTION(RECOMPILE)是有意義的。以我的經(jīng)驗,這是唯一可行的選擇,是在使用動態(tài)SQL時。在探討這種情況是否對您有意義之前,我建議您重新構(gòu)建統(tǒng)計信息。這可以通過運行以下命令來完成:
EXEC sp_updatestats
然后重新創(chuàng)建您的執(zhí)行計劃。這將確保在創(chuàng)建執(zhí)行計劃時,它將使用最新信息。
OPTION(RECOMPILE)每次查詢執(zhí)行時,添加都會重建執(zhí)行計劃。我從未聽說過將其描述為,creates a new lookup strategy但也許我們只是對同一件事使用不同的術(shù)語。
創(chuàng)建存儲過程時(我懷疑您是從.NET調(diào)用臨時sql,但如果使用的是參數(shù)化查詢,則最終將是存儲proc調(diào)用)SQL Server嘗試確定此查詢的最有效執(zhí)行計劃根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)和傳入的參數(shù)(parameter sniffing),然后緩存此計劃。這意味著,如果在數(shù)據(jù)庫中有10條記錄的地方創(chuàng)建查詢,然后在有100,000,000條記錄時執(zhí)行查詢,則緩存的執(zhí)行計劃可能不再是最有效的。
總結(jié)-我看不出有什么OPTION(RECOMPILE)好處。我懷疑您只需要更新統(tǒng)計信息和執(zhí)行計劃即可。根據(jù)您的情況,重建統(tǒng)計信息可能是DBA工作的重要組成部分。如果您在更新統(tǒng)計信息后仍然遇到問題,建議您發(fā)布兩個執(zhí)行計劃。
并回答您的問題-是的,我想說,每次執(zhí)行查詢時,最好的選擇是重新編譯執(zhí)行計劃是非常不尋常的。
- 3 回答
- 0 關(guān)注
- 1425 瀏覽
添加回答
舉報