星期五, 11月 01, 2019

[SQL] 無聯結述詞

修改一隻報表 AP 時,看一下該 TSQL 語法執行計畫,一打開就發現 Operator Warming - 無聯結述詞

[SQL] 無聯結述詞-1

[SQL] 無聯結述詞-2

該語法沒有效能問題,7 個 Table Logical Read 都沒有超過 10,且都用 Seek 抓出 1 筆資料運算而已,在測試環境上可以重現,就研究並筆記一下,整理網路文章提到重點
  • 統計資訊過期:確認統計資訊是正常的,但保險起見,這 7 個 Table 相關 Index,即使執行計畫裡沒有用上的,通通都 rebuild,WA 開頭統計資訊通通刪除,沒有幫助
  • 資料內容重複性過高:因為是廠內勾稽用判斷條件,基本上是不會有該情況
  • 返回過多不必要資料:只有回傳一筆資料,排除該情況
搞了一整天後,想說就不要理會,因為也沒轍,QQ

繼續改報表 AP 時發現,原來 TSQL 內有 2 個 Table 並不是報表所需內容,單純是順道 JOIN 一併抓出來,在 AP 內要做防呆判斷用,其中 1 個 Table 是產生 [無聯結述詞 operator] 關鍵,移除這 2 個 Table 並把防呆判斷另外寫,結案

就商業邏輯上來說,這 7 個 Table JOIN 在一起,在實務情況上是合理的,完全不知道產生原因,>.<

沒有留言:

張貼留言