第四节 子查询优化

1、结论

在实际开发中,能够不用子查询就尽量不用。

2、实际测试

①测试子查询效果

添加索引:

  1. create index idx_ceo on dept(ceo);

分析语句:

explain SELECT *
FROM emp a
WHERE a.id NOT IN
      (SELECT b.ceo FROM dept b WHERE b.ceo IS NOT NULL);

分析结果:

img017.png

②测试关联查询效果

分析语句:

explain SELECT a.*
FROM emp a
         LEFT JOIN dept b
                   ON a.id = b.ceo;

分析结果:

img018.png

③综合对比

  • 从执行顺序来说:关联查询的 id(1,1) 比 子查询的 id(1,2) 要好
  • 从查询的类型来说:ref 比 index 要好两个级别

上一节 回目录 下一节