前言
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 会自己帮你把小结果集的表选为驱动表。
结束
今天受打击了,还是基础太差了,踏踏实实的吧!之前就是太浮躁了。