3 回答

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