亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

SQL Server中的參數嗅探(或欺騙)

SQL Server中的參數嗅探(或欺騙)

郎朗坤 2019-07-15 16:20:55
SQL Server中的參數嗅探(或欺騙)不久前,我有一個查詢,我為我的一個用戶運行了相當多的查詢。它仍然在進化和調整,但最終它的建立和運行速度相當快,所以我們用它創建了一個存儲過程。到目前為止還很正常。然而,存儲過程是緩慢的。查詢和proc之間沒有實質區別,但速度變化很大。[背景,我們正在運行SQLServer 2005。]一個友好的本地DBA(不再在這里工作)看了一下存儲過程,說:“參數欺騙!”編輯:雖然它似乎也可能被稱為“參數嗅探”,但這或許可以解釋為什么當我試圖搜索它時,谷歌點擊率很低。)我們將一些存儲過程抽象為第二個存儲過程,將對這個新的內部過程的調用封裝到先前存在的外部過程中,稱為外部過程,并且,嘿,presto,它與原始查詢一樣快。那么,是什么原因呢?有人能解釋參數欺騙嗎?獎金信貸突出強調如何避免建議如何識別可能的原因討論其他策略,例如統計數據、索引、鍵,以緩解這種情況。
查看完整描述

3 回答

?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

加快速度的一個簡單方法是在sproc開始時將輸入參數重新分配到本地參數。

CREATE PROCEDURE uspParameterSniffingAvoidance    @SniffedFormalParameter intASBEGIN

    DECLARE @SniffAvoidingLocalParameter int    SET @SniffAvoidingLocalParameter = @SniffedFormalParameter   
     --Work w/ @SniffAvoidingLocalParameter in sproc body 
    -- ...


查看完整回答
反對 回復 2019-07-15
  • 3 回答
  • 0 關注
  • 935 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號