5

0.0045秒かかる行をグループ化するための簡単なクエリがあります。300.000 行

SELECT cid FROM table GROUP BY cid

クエリに MAX() を追加すると、戻るのに 0.65 秒かかります。

SELECT MAX(id) id, cid FROM table GROUP BY cid

このクエリを高速化するにはどうすればよいですか? クエリは、テストのためにローカル ホストで実行されます。id = 主キーで、cid にインデックスがあります。

4

3 に答える 3

4

その理由は、2 つのクエリの違いです。

  • 最初のクエリはテーブルに触れることはありません-インデックスのみに依存します
  • 2 番目のクエリは、実際にはすべての行にヒットする必要があります

したがって、より最適な最初のケースに戻るには、cid によるグループ化と最小/最大 ID の両方を提供できるインデックスが必要です。(cid,id) にインデックスを作成することで、これを達成することができます

于 2012-09-06T22:23:24.553 に答える