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