Where分區剪裁--SQL優化

Where分區剪裁

Join語句中Where條件的位置
當兩個表進行Join操作時,主表的Where限制可以寫在最後,但從表分區限制條件不要寫在Where條件中,建議寫在ON條件或者子查詢中。主表的分區限制條件可以寫在Where條件中(最好先用子查詢過濾)。
示例如下。
第二個語句會先Join,後進行分區裁剪,數據量變大,性能下降。在實際使用過程中,應該儘量

避免第二種用法。


select * from A join (select * from B where dt=20150301)B on B.id=A.id where A.dt=20150301;
select * from A join B on B.id=A.id where B.dt=20150301;
select * from (select * from A where dt=20150301)A join (select * from B where dt=20150301)B on B.id=A.id;

數據傾斜
產生數據傾斜的根本原因是有少數Worker處理的數據量遠遠超過其他Worker處理的數據量,從而導致少數Worker的運行時長遠遠超過其他Worker的平均運行時長,從而導致整個任務運行時間超長,造成任務延遲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章