2

我需要创建什么索引来避免使用临时文件排序的顺序

  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)
          );
4

1 回答 1

1

在这种情况下,您不能: ORDER BY 是一个不能被索引的聚合值。

请注意,您的最后一个索引与主键相同。但是,如果您将其反转为tid, cid 它可能会有所帮助,因为 GROUP BY 也暗示了 ORDER BY。但是,由于 MySQL 的工作方式,您可能会遇到 WHERE 子句的问题

于 2013-05-27T13:58:06.263 回答