当前位置:   article > 正文

mysql使用强制索引

强制索引

强制索引,即指定本次查询使用某个特定的索引,这样就可避免MySQL优化器使用低效的索引。
使用方法:sql语句里面机上force index(索引名)

select * from salaries force index(idx_emp_no ) where emp_no=10005
  • 1

应用场景

当前需要统计当天用户的充值排行榜,这里就需要统计当天时间每一个独立用户充值的总金额,这里用到的索引是用户id(int类型)以及充值时间(timestamp类型),SQL语句如下:

SELECT userid, SUM(money) AS money FROM `pay` WHERE userid > 100 AND updatetime >= 'xxxx-xx-xx xx:xx:xx' AND updatetime <= 'xxxx-xx-xx xx:xx:xx' GROUP BY userid
  • 1

上面的语句看似没啥问题,其实的确也没问题,但是就是查询时间太长了,每执行一次都要等很久。问了一下,原来MySQL执行的时候优先使用了int类型的userid这个索引,而userid这个查询只有下界,没有上界,这里面需要查询的数据量就很大了。这个时候就轮到我们的主角FORCE INDEX 出马了,强制MySQL使用updatetime这个索引,语句如下:

SELECT userid, SUM(money) AS money FROM `pay` FORCE INDEX(updatetime) WHERE userid > 100 AND updatetime >= 'xxxx-xx-xx xx:xx:xx' AND updatetime <= 'xxxx-xx-xx xx:xx:xx' GROUP BY userid
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/738069
推荐阅读
相关标签
  

闽ICP备14008679号