MySQL优化之关联查询优化

前言

SQL语句优化是很重的一个事情。所以要去做。

正文
一、left join

先写一个SQL语句看看怎么性能如何:
在这里插入图片描述
这样的情况怎么去优化呢?肯定是使用到的查询字段去建索引。
哪就先给idx_card表的card字段加上索引看看有没有效果。
执行:

ALTER TABLE `book` ADD INDEX idx_card( `card`);

在这里插入图片描述
建完索引后再接着运行咱们的查询语句看看怎么样了。
在这里插入图片描述
果然是有点变化。
前边说过了,在使用的查询条件中添加索引,现在把刚建的索引删除,然后重新在class表中的card字段建一个索引。
删除索引:

drop index idx_card on book;

删除成功:
在这里插入图片描述
然后重建索引:

alter table class add index idx_card(card);

新建成功:
在这里插入图片描述
然后再运行查询语句会怎么样呢?
在这里插入图片描述
通过show profiles;可以比较查询用时可以看的出来:
在这里插入图片描述

最后咱们得出结论:
①在优化关联查询时,只有在被驱动表上建立索引才有效!
②left join 时,左侧的为驱动表,右侧为被驱动表!

二、inner join

在这里插入图片描述
将两个查询字段调换顺序,发现结果也是一样的
在这里插入图片描述
在book表中,删除9条记录

在这里插入图片描述
在这里插入图片描述

结果显示:
在这里插入图片描述
再来试试straight_join的效果
在这里插入图片描述
sql语句执行的结果:
在这里插入图片描述

最终的结论:
inner join 时,mysql 会自己帮你把小结果集的表选为驱动表。

结束

今天受打击了,还是基础太差了,踏踏实实的吧!之前就是太浮躁了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值