[英]How to avoid Order by using temporary,filesort
我需要創建什么索引來避免通過使用臨時文件排序來進行排序
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子句中遇到問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.