gpt4 book ai didi

当 SELECT 中存在多个字段时,mysql ORDER BY 不使用索引

转载 作者:行者123 更新时间:2023-11-29 03:43:52 27 4
gpt4 key购买 nike

我正在尝试简化查询以弄清楚为什么它在生产服务器上如此缓慢。这个想法是抓取 X 个最近的条目进行分页。问题是,MySQL 的优化器似乎想要使用文件排序而不是主键 (ID)。剥离所有无关的东西,下面的工作按需要使用索引(主要):

EXPLAIN SELECT ID FROM table ORDER BY ID DESC

但是,这些变体求助于文件排序:

EXPLAIN SELECT ID, field2 FROM table ORDER BY ID DESC
EXPLAIN SELECT * FROM table ORDER BY ID DESC

我需要返回几个字段,所以这是行不通的......我可以通过以下方式解决简化查询中的问题:

EXPLAIN SELECT * FROM table FORCE INDEX (Primary) ORDER BY ID DESC

但我还没有想出如何将其用于具有表连接的更大查询。我错过了一些非常简单的东西吗?

最佳答案

试试这个查询

select * from table order by id desc limit (pageNO-1) * noEntries , noEntries

例如第 1 页和每页 10 个条目

 select * from table order by id desc limit 0, 10

例如第 2 页和每页 10 个条目

select * from table order by id desc limit 10, 10

关于当 SELECT 中存在多个字段时,mysql ORDER BY 不使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371939/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com