[pgsql-jp: 27168] インデックスが使われない
みつき@
mitsuki @ zc5.so-net.ne.jp
2002年 8月 27日 (火) 19:04:40 JST
インデックスについてご質問させていただきます。
以前このMLでお教えいただいた中の以下のSQL文ですが、
すごく遅かったのでずっと原因を調べていました。
説明:テーブルから、ユーザーごとの一番最初のアクセス時刻を取得し、「最初のア
クセス」とする。
最初のアクセスから、出力したい期間のものだけを取り出し、日付ごとに
ユーザー数を集計する
SELECT TO_CHAR(最初のアクセス,'YYYY/MM/DD'), COUNT(ユーザー名) FROM
(SELECT MIN(アクセス時刻) as 最初のアクセス, ユーザー名 FROM Table GROUP BY
ユーザー名) as t
WHERE 最初のアクセス BETWEEN 出力開始日 AND 出力終了日
GROUP BY TO_CHAR(最初のアクセス,'YYYY/MM/DD')
ORDER BY 1 DESC
「GROUP BYで出力が遅いのはインデックスが張られていないためだ」
とのアドバイスをいただき、ユーザー名、アクセス日にインデックスを張って試した
のですが、
どれもインデックスは使われませんでした。
CREATE INDEX ユーザー名_index on table (ユーザー名)
CREATE INDEX アクセス日_index on table (アクセス日)
その後EXPLAINを実行
SELECT MIN(access) as first, user FROM Table GROUP BY user
この部分が一番時間がかかっているのですが、インデックスを有効にするには
どのような記述が必要でしょうか?
みつき@
mitsuki @ zc5.so-net.ne.jp
pgsql-jp メーリングリストの案内