[pgsql-jp: 27173] Re: インデックスが使われない

Akira Atsumi a-atsumi @ technobank.co.jp
2002年 8月 28日 (水) 11:31:32 JST


あつみです。

> 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

> CREATE INDEX ユーザー名_index on table (ユーザー名)
> CREATE INDEX アクセス日_index on table (アクセス日)

 SQLを解りやすく(?)書き換えられているようですが、「アクセス時刻」と
「アクセス日」は違うものででしょうか。であれば、2つめのindexは今回の
SQLには関係ない事になります。

 ですが、いずれにしろサブクエリ部分はテーブルの全件を対象としている
ので、indexは使われないんじゃないでしょうか。

 一度

set enable_seqscan to 'OFF';

 を発行して強制的にindexを使用するようにして、速度を比較してみては
どうでしょう。

-----
Akira Atsumi
a-atsumi @ technobank.co.jp



pgsql-jp メーリングリストの案内