在ORACLE 11G大行其道的今天,還有很多人受早期版本的影響,記住一些既定的規則,
1.子查詢結果集小,用IN
2.外表小,子查詢表大,用EXISTS
摘自:http://blog.chinaunix.net/uid-7655508-id-3626647.html
簡單說明:
a表的數據小,b表數據大時用exists。a為外表(也為主表)
SELECT * FROM a WHERE EXISTS( SELECT 1 FROM b WHERE a.employee_id=b.employee_id);
b表數據量小(子表)時,用in。
SELECT * FROM a WHERE a.employee_id IN (SELECT b.employee_id FROM b);
具體原理見上面鏈接。