mysql优化join
作者:互联网
使用LEFT JOIN或RIGHT JOIN,不能直接变成JOIN,容易导致丢失查询结果。需要修改sql语句,使驱动表尽量能精确查询。
驱动表用EXPLAIN语句查找,EXPLAIN的第一行结果为查询语句的驱动表。
EXPLAIN的结果参考:https://blog.csdn.net/why15732625998/article/details/80388236
驱动表
小表驱动大表优于大表驱动小表
MySQL 表关联的算法是 Nest Loop Join,是通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与Join,则再通过前两个表的Join结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复。
可以通过EXPLAIN分析来判断在sql中谁是驱动表,EXPLAIN语句分析出来的第一行的表即是驱动表
join查询在有索引条件下
驱动表有索引不会使用到索引
被驱动表建立索引会使用到索引
在以小表驱动大表的情况下,再给大表建立索引会大大提高执行速度。
结论
1.以小表驱动大表
2.给被驱动表建立索引
驱动表和join优化介绍参考:https://www.cnblogs.com/JonaLin/p/11392613.html
优化示例参考:https://www.cnblogs.com/tianzong/p/10552182.html
标签:语句,join,EXPLAIN,查询,索引,mysql,驱动,优化,大表 来源: https://blog.csdn.net/u012517061/article/details/115751305