Mysql优化之表连接

mysql多表连接采用block nested loop算法,即循环嵌套连接:将驱动表的结果集作为循环基础数据,然后循环从该结果集每次一条获取数据作为下一个表的过滤条件查询数据,然后合并结果。如果有多表join,则将前面的表的结果集作为循环数据,取到每行再到联接的下一个表中循环匹配。驱动表的选择对性能影响很大。一般情况下,驱动表数据越少效率越高,即用小表驱动大表效率比较高。mysql会对我们写的sql语句进行优化,优化器会尽量使用最小的结果集(on和where过滤之后的临时表)最为驱动表。因为我们写在最前面的表不一定是驱动表,具体要看explain结果。

如果大表筛选条件没有索引,小表有索引,mysql会用大表驱动小表。因此大表筛选条件建立索引很重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值