数据库
首页 > 数据库> > 如何避免此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