現在狀況,sql 為
select m.*,d.* from view_ordertracking m,其中m和d都是極其復雜的視圖,m表資料量少效率高,d表資料量很大效率低,但是由于是left join,驅動表是D,因此整個sql都很慢。
left join view_majorplanprocess d
on m.orderno = d.orderno
and m.orderLineNum = d.orderlineno
因此,我嘗試改為 inner join,發現很快,因此想沿著這條路下去繼續優化。改了inner join + union 實作,發現結果對不上,不知道為啥(m,d均無重復資料),改進之后的sql
select m.*,d.* from view_ordertracking m
left join view_majorplanprocess d
on m.orderno = d.orderno
and m.orderLineNum = d.orderlineno
union all
select m.*,好多null from view_ordertracking m
為什么兩個sql的資料對不上,left join不就是inner join+left表的資料嗎
uj5u.com熱心網友回復:
改成 inner join 后不等價了;建議把視圖,改為 物化視圖;
uj5u.com熱心網友回復:
我改成 inner join后,又用union 補回來了啊uj5u.com熱心網友回復:
select m.*,d.* from view_ordertracking m第二段sql錯了,我現在貼上去。
innerjoin view_majorplanprocess d
on m.orderno = d.orderno
and m.orderLineNum = d.orderlineno
union all
select m.*,好多null from view_ordertracking m
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103458.html
標籤:開發
上一篇:sqlldr匯入時間格式問題
