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

Ookubo Nobuhiko n_okb @ brain-company.co.jp
2002年 8月 28日 (水) 15:17:04 JST


はじめまして。大久保と申します。

みつき@ さんは書きました:
---snip---
>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

この“アクセス時刻”というカラムの属性はtimestamp型でしょうか?
PostgreSQLは勉強始めたばかりであまり詳しくはないのですが、
GROUP句でTO_CHARを指定して文字型に変換しているためにIndexが
使用されないのではないのでしょうか?
Date型(日付のみ)のカラムを作り、それをIndexに作成してみたら
いかがでしょうか?

# 確かOracleではWhere句等で日付型の項目を文字型に変換して使用すると
# Indexは使用しなかったと思います。
# PostgreSQLではどのようになっているのでしょうか? > 識者の方々へ
---snip---

以上少しでもお役に立てれば幸いです。



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