iT邦幫忙

0

MSSQL 強制指定執行計劃後還是很慢

  • 分享至 

  • xImage

不好意思打擾了><
有user反應明明在同一台主機執行同一個stored procedure,
但是在相容性2008和2016上的時間差了好幾倍(2008只要21秒,2016要25分鐘)
我在網路上查到強致把2016的執行計劃指定成2008的
也有更新統計資料和重建索引值了
但是在2016跑同個sp還是一樣慢 一點進步也沒有
以下是我指定執行計劃的圖片:

想請問有大神知道為什麼會這樣嗎?
謝謝!

看更多先前的討論...收起先前的討論...
石頭 iT邦高手 1 級 ‧ 2021-08-18 11:37:23 檢舉
你的查詢是甚麼?Index怎麼建立?
能否提供 執行計畫
https://www.brentozar.com/pastetheplan/

是否都使用同一個查詢條件? 是否排除parameter sniffing

效能條件除了要提供上面資訊外還有要看硬體,blocking相關的報告.....
石頭 iT邦高手 1 級 ‧ 2021-08-18 11:53:22 檢舉
另外Prod Force執行計畫是一個危險的事情,使用前請慎重考慮
2008,2016計算執行計畫預估值公式不一樣,所以有些情況用舊版公式跑會比較好

但基本來說新的版的通常比較優化

https://www.cnblogs.com/kerrycode/p/6794534.html
試著在2016上重建一個新的微型環境測試連接看看,OK的話再把資料一筆一筆轉換到新平台上,不要用備份還原或卸除重載的方式匯入新平台,先擺脫相容性的問題,再來解決效能的狀況
lulu_meat iT邦研究生 5 級 ‧ 2021-08-20 10:09:42 檢舉
@japhenchen 謝謝您的回覆! 我剛剛試過完全在2016上重建一個DB 然後也一筆一筆匯入 還是一樣慢 但改成相容性2008又變超快XD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
I code so I am
iT邦高手 1 級 ‧ 2021-08-19 09:57:44

差這麼多,應該是2016上的資料表 Index 未設定。或者是新舊環境不一致的問題,例如記憶體大小或硬碟(SSD or 一般硬碟)。

lulu_meat iT邦研究生 5 級 ‧ 2021-08-19 16:30:25 檢舉

您好,我是在同一台主機上面測的~ 兩個環境都一致 只有相容性的差別而已 2008和2012執行速度超快 但是到2014就完全不行了><

把2012的DB backup, 再 restore 至 2016 試試看吧。

我要發表回答

立即登入回答