我有一个表,其中包含我排序依据的datetime列。无论我做什么,我总是从解释中得到“使用where;使用文件排序”。
有没有办法在不使用文件排序的日期时间列上获得ORDER BY?
查询非常简单,如下所示:
SELECT * FROM table1 WHERE creator_id = 1 AND user_id != 1 ORDER BY created DESC LIMIT 5
索引在creator_id和user_id上,我认为没有理由将索引放在created上,因为它基本上总是唯一的,因此将在所有项上创建索引,即与表一样大。
编辑:我应该提一下,我也试过将索引放在created上,结果是一样的。
发布于 2013-02-02 16:16:26
如果在(creator_id, created)上创建复合索引,则查询速度会快得多。
查询规划器将使用索引的第一部分:creator_id来满足WHERE约束,并使用created的第二部分来排序。
https://stackoverflow.com/questions/14659955
复制相似问题