今天同事遇到一个奇怪的sql查询的问题:一条sql有时候执行素的很快(0.xxs),有时候执行很慢(20s+),不知道是什么问题.
猜测:1、是不是第一次执行,被mysql缓存了?后面几次直接拿缓存的结果。
2、是不是网络的原因?
3、索引使用的原因(探究后补充)
正常sql执行如下图:
执行快的时候:

执行慢的时候:

①于是开始第一次探索(sql执行不使用缓存):
sql 查询加上关键字 SQL_NO_CACHE

依然是相同的结果,时快,时慢。
②考虑是网络的问题,于是将sql转移到服务器本地执行,执行结果仍然与之前一致。
③那就看一下执行计划吧
第一次执行

执行多次之后,终于发现问题所在了:

mysql优化器根据他自己的优化算法会选择不同的索引,导致查询效率不一样。不过这次看起来不大聪明的样子。
调整:指定索引 FORCE INDEX(索引名称)

好啦,这下稳定输出啦。



















![[000-01-022].第09节:RabbitMQ中的消息分发策略](https://i-blog.csdnimg.cn/blog_migrate/beb15d3677f2212272ec26fcd2a5199a.png)