为了账号安全,请及时绑定邮箱和手机立即绑定

难道是mysql配置的问题???tell me why!!!

难道是mysql配置的问题???tell me why!!!

偶然的你 2023-04-18 18:14:54
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认为全表扫效率更高,是这样的吗?但是慢查询日志里他效率确实不高啊!
查看完整描述

1 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

我觉得做分页完全可以这样:

SELECT *FROM `XXX` AS `x`INNER JOIN(    SELECT `id`
    FROM `XXX`
    ORDER BY `id` DESC
    LIMIT M,N
) AS `t`USING(`id`)

子查询用到了覆盖索引,所以不需要扫描磁盘就找到了所需要的行的id,然后可以直接去磁盘取需要的数据了。


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信