数智融合计算服务 DATAARTSFABRIC-子查询调优:更多优化示例
更多优化示例
示例:修改select语句,将子查询修改为和主表的join,或者修改为可以提升的subquery,但是在修改前后需要保证语义的正确性。
1
|
explain (costs off)select * from t1 where t1.c1 in (select t2.c1 from t2 where t1.c2 = t2.c2); |
上面示例计划中存在一个subPlan,为了消除这个subPlan可以修改语句为:
1
|
explain(costs off) select * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2); |
从计划可以看出,subPlan消除了,计划变成了两个表的semi join,这样会大幅度提高执行效率。