*本文章使用数据均来自MySQL样本数据库Sakila,参考:https://blog.csdn.net/tanglei6636/article/details/93042010
通常情况下,需要把子查询优化成JOIN查询。
这是一个实现查询演员名为“sandra”的表演影片片名的SQL,通过EXPLAIN关键字进行解析,这个查询中包含三个子查询,并且出现了两次ALL全表扫描的查询,需要优化。
下面我们把所涉及的子查询进行JOIN形式的改写。
或者用WHERE的形式进行优化。
如图,从EXPLAIN的解析上来看查询已经进行了非常大的优化提升,不仅减少了一次ALL全表扫描,还让所有的SQL的select_type变成了SIMPLE简单查询。
注意:在进行优化时要注意一对多的关系,要处理重复数据(如使用DISTINCT关键字)。