該語法沒有效能問題,7 個 Table Logical Read 都沒有超過 10,且都用 Seek 抓出 1 筆資料運算而已,在測試環境上可以重現,就研究並筆記一下,整理網路文章提到重點
- 統計資訊過期:確認統計資訊是正常的,但保險起見,這 7 個 Table 相關 Index,即使執行計畫裡沒有用上的,通通都 rebuild,WA 開頭統計資訊通通刪除,沒有幫助
- 資料內容重複性過高:因為是廠內勾稽用判斷條件,基本上是不會有該情況
- 返回過多不必要資料:只有回傳一筆資料,排除該情況
繼續改報表 AP 時發現,原來 TSQL 內有 2 個 Table 並不是報表所需內容,單純是順道 JOIN 一併抓出來,在 AP 內要做防呆判斷用,其中 1 個 Table 是產生 [無聯結述詞 operator] 關鍵,移除這 2 個 Table 並把防呆判斷另外寫,結案
就商業邏輯上來說,這 7 個 Table JOIN 在一起,在實務情況上是合理的,完全不知道產生原因,>.<
沒有留言:
張貼留言