如何避免此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