我需要创建哪些索引才能通过使用临时文件或
来避免订单 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)
);
答案 0 :(得分:1)
在这种情况下,您不能:ORDER BY位于聚合值上,无法将其编入索引。
请注意,您的上一个索引与主键相同。但是,如果将其反转为tid, cid
,它可能会有所帮助,因为GROUP BY也暗示了ORDER BY。但是,由于MySQL的工作原理,您可能会遇到WHERE子句的问题