为什么mysql表里order by id desc用不到索引?
ID是自增主键,不知道为什么就是用不到索引,explain的时候rows扫的是全表,效率很低,换其他已经索引的列也不行,分页用到的order by。where 的时候可以用到索引,就是一order by就不行了,请教各位前辈~~~
这样可以用到索引:
SELECT * FROM `XXX` ORDER BY id DESC LIMIT 10,40;
这样用不到索引:
SELECT * FROM `XXX` ORDER BY id DESC LIMIT 10,41;
用不到索引:
SELECT * FROM `give` ORDER BY id desc LIMIT 400,20;
这样也用不到索引。。。:
SELECT * FROM `give` ORDER BY id desc;
update:现在库里有520rows,有朋友说是因为行数小于1000,索引mysql认为全表扫效率更高,是这样的吗?
但是慢查询日志里他效率确实不高啊!
是mysql配置的问题???tell me why,困惑了~~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我觉得做分页完全可以这样:
子查询用到了覆盖索引,所以不需要扫描磁盘就找到了所需要的行的id,然后可以直接去磁盘取需要的数据了。