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 に答える