- EXISTS 的执行逻辑:它是“存在性判断”,只要子查询找到符合条件的记录就会立即终止扫描,不需要遍历完整的结果集。当子查询结果集较大时,这种“提前终止”的特性能显著提升性能。 - IN 的执行逻辑:它需要先把所有子查询的结果加载到内存中,再逐一进行匹配,当结果集很大时会占用大量内存,且必须遍历全部数据才能完成判断。 SELECT * FROM orders o WHERE EXISTS ( SELECT 1 FROM customers c WHERE c.customer_id = o.customer_id AND c.country = 'China' ); SELECT * FROM orders WHERE customer_id IN ( SELECT customer_id FROM customers WHERE country = 'China' );