我有一个带有ORDER BY日期时间列的表。 无论我做什么,我都会在EXPLAIN中继续“使用where; using filesort”。
是否无法在datetime列上获取ORDER BY而不使用filesort?
查询非常简单,看起来像这样:
SELECT * FROM table1 WHERE creator_id = 1 AND user_id != 1 ORDER BY created DESC LIMIT 5
index在creator_id和user_id上我看不出创建索引的理由,因为它基本上总是唯一的,因此会在所有项目上创建索引,即与表格一样大。
编辑:我应该提到我已经尝试过将index设置为on,同样的结果。
答案 0 :(得分:1)
如果您在(creator_id, created)
上创建复合索引,则查询应该更快。
查询规划器将使用索引的第一部分:creator_id
来满足WHERE约束,并使用created
的第二部分来排序。