我需要创建什么索引来避免使用临时文件排序
EXPLAIN SELECT tid, sum(count)
FROM test
WHERE cid = 1
GROUP BY tid
ORDER BY sum(count) DESC
1 SIMPLE test ref PRIMARY,id_UNIQUE,cid cid 4 const 2 Using where; Using index; Using temporary; Using filesort
创建表:
CREATE TABLE test(
cid INT,
tid INT,
datedm INT,
count INT,
PRIMARY KEY(cid,tid,datedm),
INDEX(cid,tid,count),
UNIQUE INDEX id_UNIQUE(cid,tid,datedm)
);
最佳答案
在这种情况下你不能:ORDER BY 是在一个不能被索引的聚合值上。
请注意,您的最后一个索引与主键相同。但是,如果您将其反转为 tid, cid
它可能会有所帮助,因为 GROUP BY 也暗示了一个 ORDER BY。但是,由于 MySQL 的工作方式,您可能会遇到 WHERE 子句的问题
关于mysql - 如何通过使用临时文件排序来避免排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774756/