1 什么是子查询
将一个子查询的结果拥有查询条件中。
2 子查询存在的问题
需要为子查询的结果创建一个临时表,耗内存并且费时。
连接不需要创建临时表,它的操作直接在原表或者原表的索引上进行。
一般情况下可以用连接代替子查询。
SELECT * FROM t1
WHERE t1.a1 NOT
in
(SELECT a2 FROM t2 )
优化后:
SELECT * FROM t1
LEFT JOIN t2 ON t1.a1=t2.a2
WHERE t2.a2 IS NULL