第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OPTION(RECOMPILE)總是更快;為什么?

OPTION(RECOMPILE)總是更快;為什么?

溫溫醬 2020-02-04 16:19:03
我遇到了一種奇怪的情況,將OPTION (RECOMPILE)查詢追加到查詢中會使查詢在半秒內(nèi)運行,而忽略查詢會使查詢花費超過五分鐘的時間。從Query Analyzer或C#程序通過執(zhí)行查詢時,就是這種情況SqlCommand.ExecuteReader()。打電話(或不打電話)DBCC FREEPROCCACHE或DBCC dropcleanbuffers沒有區(qū)別;查詢結(jié)果總是在OPTION (RECOMPILE)不超過五分鐘的情況下即時返回。始終使用相同的參數(shù)調(diào)用該查詢(為了進行此測試)。我正在使用SQL Server 2008。我對編寫SQL相當(dāng)滿意,但以前從未OPTION在查詢中使用過命令,并且在掃描此論壇上的帖子之前并不熟悉計劃緩存的整個概念。我從帖子中了解到,這OPTION (RECOMPILE)是一項昂貴的操作。顯然,它為查詢創(chuàng)建了新的查找策略。那么,為什么隨后的省略的查詢OPTION (RECOMPILE)是如此之慢呢?后續(xù)查詢是否應(yīng)該利用上一次包含重新編譯提示的調(diào)用所計算的查找策略?是否有一個查詢在每次調(diào)用時都需要重新編譯提示是非常不尋常的嗎?對不起入門級的問題,但我實在無法一馬當(dāng)先。更新:我被要求發(fā)布查詢...select acctNo,min(date) earliestDate from(     select acctNo,tradeDate as date     from datafeed_trans     where feedid=@feedID and feedDate=@feedDate     union     select acctNo,feedDate as date     from datafeed_money     where feedid=@feedID and feedDate=@feedDate     union     select acctNo,feedDate as date     from datafeed_jnl     where feedid=@feedID and feedDate=@feedDate )t1 group by t1.acctNoOPTION(RECOMPILE)從查詢分析器運行測試時,我將在以下幾行前添加:declare @feedID intselect @feedID=20declare @feedDate datetimeselect @feedDate='1/2/2009'從我的C#程序調(diào)用它時,參數(shù)通過SqlCommand.Parameters屬性傳遞。為了便于討論,您可以假設(shè)參數(shù)永遠不會改變,因此我們可以排除次佳的參數(shù)氣味是造成這種情況的原因。
查看完整描述

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í)行計劃是非常不尋常的。


查看完整回答
反對 回復(fù) 2020-02-04
  • 3 回答
  • 0 關(guān)注
  • 1425 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號