[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 メーリングリストの案内