dポイントプレゼントキャンペーン実施中!

テーブルtbl(c1,c2,c3)に対して、
select c1, c2, count(distinct c3) from tbl where group by c1,c2;
というクエリの高速化をしたいのですが、どのようなインデックスを張れば良いでしょうか。(あるいは、もっと良いクエリの書き方はありますか?)

A 回答 (2件)

c1,c2をキーにc3を集計するならやはり



ALTER TABLE tbl ADD INDEX (c1,c2,c3)

しとかないとパフォーマンスがでないかもしれませんね。
    • good
    • 0

はじめまして、通りすがると申します。


さて、どのようなインデックスを張ればいいかともうしますと、上記掲載内容だけでは解りません。
調査する方法として、EXPLAINというコマンドがあります。
これは、指定sqlでどのような計画が練られて、どの命令でどれぐらいのコストがかかるかを、
調査してくれます。
 記述方法は、 EXPLAIN select c1, c2, count(distinct c3) from tbl where group by
c1,c2
こんな感じです。
 この実行結果を参考にどのキーを追加すればよいか、解ると思います。

 補足
  EXPLAN にはパラメータとしてANALYZE がありますが、これは発行したSQLを実際に実行して
 しまうので、それなりの対処が必要です。(トランザクション制御してROLLBACK)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!