mysql 减少文件排序_如何避免此MySQL查询的文件排序

我需要一些帮助来避免对该查询进行文件排序.

SELECT id

FROM articles USE INDEX(group)

WHERE type = '4'

AND category = '161'

AND did < '10016'

AND id < '9869788'

ORDER BY id DESC

LIMIT 10

INDEX(group)是(type,category,did,id)的覆盖索引

由于使用ORDER BY id DESC,因此执行文件排序.有没有办法避免这种查询的文件排序?

解决方法:

更改索引列的顺序.索引对于排序没有用,因为它是第4列,还不能按原样使用.

当然,这会影响此WHERE索引的有用性,因为在等式之前需要一个不等式列

在MySQL docs中,中断“您在键的非连续部分上使用ORDER BY”和“用于获取行的键与ORDER BY中使用的键不同”

编辑:根据我上面的链接,您不能有一个同时满足WHERE和ORDER BY的索引.由于我上面发布的2个条件,它们是互斥的

另一个建议:

> ID上的单列索引

>也回到原始索引

>删除索引提示

>希望优化器能够同时使用两个索引(“索引交集”)

标签:sql-order-by,filesort,sql,mysql

来源: https://codeday.me/bug/20191102/1991344.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值