記錄工作中遇到的問題,分享出來: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一個比較鬱悶的問題,如下圖: 點擊庫存或者點擊銷售,查詢數據很慢,有的將近幾十秒,查詢數據用的是存儲過程,在資料庫中執行 ...
記錄工作中遇到的問題,分享出來:
原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281
今天遇到一個比較鬱悶的問題,如下圖:
點擊庫存或者點擊銷售,查詢數據很慢,有的將近幾十秒,查詢數據用的是存儲過程,在資料庫中執行存儲過程,查詢數據是很快的,速度非常理想,1秒不到,但是c#程式中調用就要很久。
百度了很多,後來這上面的那篇文章中找到了原因所在:
原因分析:
由於存儲過程是預編譯的, 在第一次執行的時候, 會生成執行計劃, 以後執行的時候, 會使用這個執行計劃(除非存儲過程侯或者顯示指定重新編譯), 而不是每次執行時都去生成執行計劃。
當存儲過程涉及的對象結構調整, 或者相關的數據產生了很大變化, 這可能導致原來的計劃不適合當前的現狀(執行計划過期), 這種情況下應該重新編譯存儲過程。
解決方法:
exec sp_recompile @objname='存儲過程名稱'
再次測試程式,可以了,速度很很快,還是很理想的!
如果修改一次不行,可以再修改一次,再等會測試