Java开发笔记-mysql语句查询指定索引

今天同事遇到一个奇怪的sql查询的问题:一条sql有时候执行素的很快(0.xxs),有时候执行很慢(20s+),不知道是什么问题.

  猜测:1、是不是第一次执行,被mysql缓存了?后面几次直接拿缓存的结果。

             2、是不是网络的原因?

             3、索引使用的原因(探究后补充)

正常sql执行如下图:

执行快的时候:

执行慢的时候:

①于是开始第一次探索(sql执行不使用缓存):

sql 查询加上关键字 SQL_NO_CACHE

依然是相同的结果,时快,时慢。

②考虑是网络的问题,于是将sql转移到服务器本地执行,执行结果仍然与之前一致。

③那就看一下执行计划吧

第一次执行

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

mysql优化器根据他自己的优化算法会选择不同的索引,导致查询效率不一样。不过这次看起来不大聪明的样子。

调整:指定索引   FORCE INDEX(索引名称)

好啦,这下稳定输出啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值