oracle数据库EXISTS语法转成hive语法LEFT SEMI JOIN
Hive中EXISTS的底层实现实际上是LEFT SEMI JOIN。这种转换方式性能最优,执行计划与EXISTS完全一致。
oracle:
SELECT a.* FROM table1 a WHERE EXISTS (SELECT 1 FROM table2 b WHERE a.id = b.id);
hive:
SELECT a.* FROM table1 a LEFT SEMI JOIN table2 b ON a.id = b.id;
hive中LEFT SEMI JOIN,相当于in关联只取左表
浙公网安备 33010602011771号