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 会自己帮你把小结果集的表选为驱动表。

结束

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章