🌴🌴这几天就不先发无题系列的文章了,虽然已经写了…
🌴🌴今天纳,聊聊mysql查询语句优化的那些事
🌴🌴怎么查询速度快怎么来,
🌴🌴大不了删库跑路是吧
反正,那又如何,不是么
🍪今天上司看你不爽,直接一大串代码丢你,说:“优化下查询速度”
🍉傻眼了吧?我也傻眼了 ,啥也别说先执行下吧!
🍪好家伙21秒的查询速度,我脑海还在想是能有什么优化的地方时,手已经在熟练的打开百度,打开csdn,打开博客园,打开。。。
来吧,展示!
🌲佛说:多表联查有什么好优化的?
🌲我说:但凡多看几篇我的文章,也不至于这么问我
(开个玩笑哈。)
🍉多表联查这里有个知识点了,那就是驱动表
(不理解什么是驱动表的百度去吧)
🌴开玩笑的了,我怎么可能让可爱的你们去百度看一大堆理论呢?
🌴简而言之,驱动表就是两个表关联时数据少的那个表做驱动表,查询速度最快
好,理论成立,实践开始!
🍉看见没!看见没!15秒
等啥呢?还不快点挨个试试?
🌻确定速度最快的关联方式后,速度提升到了15秒,还能怎么优化呢?别急,再往下看
🍪改完之后还是15秒????
🍪 那这里先晾着,接着往下看有什么能改的
🍉 好的23秒,放弃
🍪完了现在还能怎么改?嗯。。。索引 ?!
🍪 得吧,先来看下索引使用情况, explain 加上!
🍪有索引!!还很多!?不对劲,先看下到底有多少个索引
🍪不查不知道!
🍪我去??不知道一个表最好不超过5个索引吗?
(小声逼逼赖赖:一看就是不好好看老夫写的文章)
优化点找到了一个了:索引太多!
怎么办?别急,先看每个表的索引有哪些,实际用到的索引又有那些
理论存在。实践开始!
先看每个表有什么索引
🍉咦,原来才四个表啊…
🍉好,接着看实际用到的索引
🍉好,我们在对比一下
🍉没用到的索引怎么办?方法多了去咯
🍉我就写其中一个思路吧,创建一各组合索引,直接强制指定使用这个索引
/*新建一个组合索引*/
create index 索引名 on 哪个表(字段1,字段2,...)
/*强制使用这个索引,懂加在哪里?别问,百度!*/
force index 索引名
🍉🍉🍉🍉🍉好了,这里就不演示了,因为我的这个用户没有权限,目前为止两个地方优化了,差不多得了 🍉🍉🍉🍉🍉
(小声逼逼赖赖:才不是因为懒)