gpt4 book ai didi

mysql - 使用 ORDER BY 和 LIMIT 查询非常慢

转载 作者:可可西里 更新时间:2023-11-01 07:54:42 25 4
gpt4 key购买 nike

我的查询非常慢,因为使用了 ORDER BY。现在我明白了为什么它很慢,但我不知道如何让它更快。

该表大约有 900.000 条记录。 (慢的原因)

SELECT SQL_NO_CACHE id, name 
FROM users where is_provider = 0
AND activated_at IS NOT NULL
AND is_ngo = 0
AND deleted_at is NULL
AND is_cancelled = 0
ORDER BY name
LIMIT 60000, 90;

我使用限制是因为我使用分页。 SQL_NO_CACHE 因为我不想使用缓存进行测试。

这个查询大约需要 60 秒,这太长了。这是一个后台任务,所以如果我能在 5 秒内重新使用它就可以了

我在 activated_at 列和 deleted_at 上有索引,它们是时间字段。其他的是 bool 值,因此不需要索引。

谢谢

最佳答案

我认为索引是答案,但你必须为你的查询找出正确的索引,所以你应该试试这个:

EXPLAIN SELECT SQL_NO_CACHE id, name 
FROM users where is_provider = 0
AND activated_at IS NOT NULL
AND is_ngo = 0
AND deleted_at is NULL
AND is_cancelled = 0
ORDER BY name
LIMIT 60000, 90;

正如这篇非常古老但很有用的文章中所详述的那样:
http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm

关于mysql - 使用 ORDER BY 和 LIMIT 查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249377/

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