由于使用了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;
我使用limit是因为我使用分页。SQL_NO_CACHE是因为我不想在测试中使用缓存。
这个查询需要大约60秒,时间太长了。它是一个后台任务,如果我能将其减少到5秒,那就可以了。
我在activated_at和deleted_at列上有索引,它们是时间字段。其他的是布尔型,所以不需要索引。
谢谢。