暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
如何优化Join速度
586
2页
1次
2020-06-29
5墨值下载
用小结果集驱动大结果集,减少外层循环的数据量:
如果小结果集和大结果集连接的列都是索引列,
mysql
在内连接时也会选择用小结果集驱
动大结果集,因为索引查询的成本是比较固定的,这时候外层的循环越少
join
的速度便
越快。
为匹配的条件增加索引:争取使用
INLJ
,减少内层表的循环次数
增大
join buer size
的大小:当使用
BNLJ
时,一次缓存的数据越多,那么外层表循环的
次数就越少
减少不必要的字段查询:
1
当用
BNLJ
时,
join buer
缓存越多环次
就越少;
2
)当用到
INLJ
时,如果可以不回表查询,即利用到覆盖索引,则可能可以提示速度。
实例:
假设两张表
a
b
其中
b
的关联有
comments_id
,所以有索引。
1.join
使
Index Nested-Loop Join
a
动表
b
的索引进行
seek
匹配,预计得到一条数据。
下面这种情况没用到索引:
使
Block Nested-Loop Join
b
b
join buer
中,批量对
a
表扫描
2.left join
Index Nested-Loop Join
张表作为驱动表去进行
join
,去关联非驱动表的索引。
如果加了条件
就会从驱动表筛选出一条来进行对非驱动表的匹配。
left join
:会保全左表数据,如果右表没相关数据,会显示
null
light join
:会保全右表数据,如果左表没相关数据,会显示
null
inner join
:部分主从表,结果会取两个表针对
on
条件相匹配的最小集
of 2
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜