如何通过使用临时文件来避免订单

时间:2013-05-27 13:54:25

标签: mysql

我需要创建哪些索引才能通过使用临时文件或

来避免订单
  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)
          );

1 个答案:

答案 0 :(得分:1)

在这种情况下,您不能:ORDER BY位于聚合值上,无法将其编入索引。

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