列表

详情


以下ODPS SQL哪个效率最高(见Join语句中where条件的位置) ?( )


A. select * from (select from A where dt='20140301') A left outer join B on id=

B. 没有区别

C. select * from A left outer join B on id=id and A.dt=20140301

D. select * from A left outer join B on id=id where A.dt=20140301

参考答案: A

详细解析:

正确答案A 。本题需要了解join的执行DAG过程,同时影响join速度的是数据量、是否笛卡尔积、是否数据倾斜等,本题涉及数据量问题。
ACD选项SQL逻辑的区别在于: 
A、使用子查询过滤表A后,A表根据分区裁剪数据量会下降,实际参与join的数据量会降低,效率自然提高。
C、执行过程与A相同,但官网推荐使用子查询提高效率。 
D、很显然D选项A表所有分区参与计算后进行过滤,数据集较大效率相对较低。


上一题