※ 引述《bernachom (Terry)》之銘言:
: 各位前輩好,請教一下
: 如果有300萬筆資料需要select
: ,然後這300萬筆資料,是多個table,join之後才select出來的
: ,那麼,先把部份的select資料,放到data table,再繼續join,
: 效能會比較好。
: 還是說,直接join就可以了呢?
: 我心理覺的dbms應該會做優化,所以直接join應該就可以了吧?
: 但是朋友認為先放到data table再繼續join效能會比較好。
: 我晚點會來做個實驗,手邊沒有安裝資料庫的電腦。
: 想先詢問前輩們的經驗和看法。
: 謝謝指導了
你的意思是, 把中間的join結果, 先實體化到資料庫會不會比較快?
%第一次執行
我的看法是不會, 因為SQL Engine有IO最佳化
記憶體不夠Join時, 它也是"暫時"放到cache或磁碟了, 它放得當然比你放得更有效率
%重複執行
如果下次還要再執行同樣的join呢?
理論上那就會比較快, 因為他省略了幾個join, 直接抓取中間的結果
不過如果中間暫存結果, 還存在cache裡面的話, 其實看不出效率差距
要把cache洗掉才看得出差異
講一下自己的看法, 有錯請鞭小力XD