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