偶遇 sqlserver 參數嗅探

需求:sql

  費用統計緩存

環境:sqlserver

  查詢設計多張大表測試

解決方案:優化

  優化查詢語句,封裝成存儲過程,創建索引,最終查詢速度很不錯。部署上線,告一段落。。。spa

 

一段時間後投訴來了。。。設計

客戶投訴說查詢沒內容,我看了日誌是超時了。我本身也經過應用查詢了一把也是超市,sql profiler 抓下執行存儲過程的語句,放到sqlserver management 中執行也是很慢。日誌

當時十分費解,緣由是當時開發時速度很快,怎麼通過一段時間後就慢了呢?server

回頭繼續寫。。。索引

 

2014-07-27  繼續。。

主要原理是多表鏈接時,違背了小表驅動原則。

本身測試時可能使用了一個小比重條件,的確是符合小表驅動原則,而後這種執行計劃被緩存了。。

結果再客戶查詢的時候,他輸入的是大比重條件,變成大表驅動,致使很慢。

知道原理後,解決方案就多了。