Mysql orderby limit 索引命中规则

最近做的一个项目,发现了sql慢查询的情况,还好及时发现而且访问量并没有那么大,不然会造成很严重的事故,所以想记录一下,作为自己的成长记录,要不这脑子也不太好使记不住。

Mysql版本 5.6.25
表结构不展示啦 直接看索引 (公司的表不方便泄露 假如是table_name吧)
SHOW INDEX FROM table_name (列出索引信息)
在这里插入图片描述
问题sql (我是想通过questionId 进行排序 做分页处理 3475834代表上一页最大的questionId的值 )
EXPLAIN
SELECT QuestionID FROM table_name
WHERE (CourseSectionID in(569743,508457) )
AND (QuestionID > 3475834)
ORDER BY QuestionID
LIMIT 50

在这里插入图片描述
发现rows 的值有 60多万 就是mysql扫表行数有这么多 好恐怖(为什么恐怖自己查去 本节不介绍恐怖原因) 使用的索引是QuestionID和CourseSectionID 的联合索引

优化sql
1.EXPLAIN
SELECT QuestionID FROM table_name
WHERE

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值