簡體   English   中英

如何通過使用臨時文件排序來避免順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM