-PR-
  • 困ってます
  • 質問No.6346080
解決
済み

date型のインデックス

  • 閲覧数257
  • ありがとう数7
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 38% (89/231)

インデックスが貼ってあるdate型のカラムがあるのですが、うまくインデックスがあたりません。
検索条件を下記のようにしています。

working_date = TO_DATE('2010/11/26')

date型は秒数を保持していることが影響しているのでしょうか?
ファンクションインデックスを貼って、下記のようにすればインデックスは当たってます。

 TO_DATE(working_date,'YYYY/MM/DD') = '2010/11/26'

ご存知のかたがおられましたら教えてください。
  • 回答数6
  • 気になる数0

質問者が選んだベストアンサー

  • 回答No.2
レベル10

ベストアンサー率 54% (76/140)

実際に working_date に格納されている値に時刻が含まれているのですか?

> TO_DATE(working_date,'YYYY/MM/DD') = '2010/11/26'

これは、文字列である working_date を date型に変換して、文字列と比較という奇妙なことになります。

本当に working_date が date型で、ファンクションインデックスを張るなら、
TRUNC(working_date) がよろしいかと。
お礼コメント
cosboki

お礼率 38% (89/231)

ご回答ありがとうございます。

>実際に working_date に格納されている値に時刻が含まれているのですか?

下記のような値がはいってます。

2010/11/26 14:58:35

やはり秒数が問題なのでしょうか?
投稿日時 - 2010-11-27 10:10:32
  • ありがとう数0
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル14

ベストアンサー率 24% (755/3136)

working_date = TO_DATE('2010/11/26','YYYY/MM/DD') としたらどうでしょう。 時分秒があるので、DB中の項目は時分秒はどのような値になっているのでしょうか? ...続きを読む
working_date = TO_DATE('2010/11/26','YYYY/MM/DD')
としたらどうでしょう。
時分秒があるので、DB中の項目は時分秒はどのような値になっているのでしょうか?
お礼コメント
cosboki

お礼率 38% (89/231)

ご回答ありがとうございます。

>DB中の項目は時分秒はどのような値になっているのでしょうか?

下記のような値がはいっております。

2010/11/26 14:58:35

やはり秒数まで正確に当てにいかないとインデックスは効かないものでしょうか?
投稿日時 - 2010-11-27 10:13:35
  • ありがとう数0
  • 回答No.3
レベル10

ベストアンサー率 45% (49/107)

・「実行計画を表示すると、TABLE ACCESS FULLとなっている」 ということなのでしょうか? ・warking_dateへのインデックスは単独列へのインデックスですか? 上記がYESであれば、実行計画はINDEX RANGE SCANになってしかるべきだと思います。 時分秒は0:0:0を指定しているのと同じなので、指定が必要とは思われませんが、 いちおう以下も試してみますか。 workin ...続きを読む
・「実行計画を表示すると、TABLE ACCESS FULLとなっている」
ということなのでしょうか?

・warking_dateへのインデックスは単独列へのインデックスですか?

上記がYESであれば、実行計画はINDEX RANGE SCANになってしかるべきだと思います。
時分秒は0:0:0を指定しているのと同じなので、指定が必要とは思われませんが、
いちおう以下も試してみますか。

working_date = TO_DATE('2010/11/26 00:00:00', 'YYYY/MM/DD HH24:MI:SS')
  • ありがとう数0
  • 回答No.4
レベル14

ベストアンサー率 24% (755/3136)

working_date between TO_DATE('2010/11/26 00:00:00','YYYY/MM/DD HH24:Mi:SS') AND TO_DATE('2010/11/26 23:59:59','YYYY/MM/DD HH24:Mi:SS') としてみては
working_date
between
TO_DATE('2010/11/26 00:00:00','YYYY/MM/DD HH24:Mi:SS')
AND TO_DATE('2010/11/26 23:59:59','YYYY/MM/DD HH24:Mi:SS')
としてみては
  • ありがとう数0
  • 回答No.5
レベル14

ベストアンサー率 33% (1403/4212)

もし、ご質問が単に「Where条件が思い通りにならない」であれば where to_char(working_date, 'yyyy/mm/dd') = '2010/11/26' で良いのでは? 何百万レコードもあるようならファンクションインデックスを検討してみては?
もし、ご質問が単に「Where条件が思い通りにならない」であれば

where to_char(working_date, 'yyyy/mm/dd') = '2010/11/26'

で良いのでは?


何百万レコードもあるようならファンクションインデックスを検討してみては?
  • ありがとう数0
  • 回答No.6
レベル10

ベストアンサー率 54% (76/140)

質問者さんはファンクションインデックスの意味を理解してないのでは... http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34986&forum=8 http://www.atmarkit.co.jp/fdb/rensai/oraobstacle03/oraobstacle03_1.html
質問者さんはファンクションインデックスの意味を理解してないのでは...

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34986&forum=8

http://www.atmarkit.co.jp/fdb/rensai/oraobstacle03/oraobstacle03_1.html
  • ありがとう数0
  • 回答数6
  • 気になる数0
このQ&Aで解決しましたか?

関連するQ&A

-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


-PR-

ピックアップ

-PR-
ページ先頭へ