【MySQL】基于MySQL的SQL优化(三)——对子查询进行优化

*本文章使用数据均来自MySQL样本数据库Sakila,参考:https://blog.csdn.net/tanglei6636/article/details/93042010

通常情况下,需要把子查询优化成JOIN查询。
【MySQL】基于MySQL的SQL优化(三)——对子查询进行优化_第1张图片

这是一个实现查询演员名为“sandra”的表演影片片名的SQL,通过EXPLAIN关键字进行解析,这个查询中包含三个子查询,并且出现了两次ALL全表扫描的查询,需要优化。
下面我们把所涉及的子查询进行JOIN形式的改写。
【MySQL】基于MySQL的SQL优化(三)——对子查询进行优化_第2张图片

或者用WHERE的形式进行优化。
【MySQL】基于MySQL的SQL优化(三)——对子查询进行优化_第3张图片

如图,从EXPLAIN的解析上来看查询已经进行了非常大的优化提升,不仅减少了一次ALL全表扫描,还让所有的SQL的select_type变成了SIMPLE简单查询。
注意:在进行优化时要注意一对多的关系,要处理重复数据(如使用DISTINCT关键字)。

你可能感兴趣的:(mysql)