SQL效能調校-資料瘦身

最近跟 Andy 哥在查一個 SQL 效能的問題,

執行時間大約是 10 幾秒,

所以使用者都受不了...

因為SQL很長,所以截取一部份出來,如下,

 

一開始以為是因為 in 裡面的項目太多所造成的(大約有 80 幾個),

後來改成只放一個,似乎也快不到那去。

所以就看一下它的執行計畫如下,

疑~~~ 為什麼下面會有一個那麼 粗的資料流呢?

大約3百多萬筆資料,而且還是用 掃描(Scan)的方式,那不就是一筆筆地找到要的資料嗎? 

但是上面 Join 出來的資料卻很少。

 

這時我們的解法可以將原本 Join 那 3百多萬筆的方式,改成用 Subquery 的方式(當成是 Select 中的一個欄位),如下,

這樣執行時間大約是3秒內,而執行計畫如下,

如果有類似的狀況,可以試著這樣解看看哦 ^_^ 

另外,執行計畫中「實際」與「估計」資料筆數不符,是因為統計資料沒有更新,

請查看資料庫屬性->選項的設定,如下,

影片如下,

投影片如下,

http://www.slideshare.net/rainmakerho/sql-71254063

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^