ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql优化join

2021-04-16 11:02:58  阅读:191  来源: 互联网

标签:语句 join EXPLAIN 查询 索引 mysql 驱动 优化 大表


使用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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有