EVENT_DATEにインデックスがありますか?あなたがしなければ、あなたは完全なテーブルスキャンを持っており、それはインデックスを構築することなくそれが得られるのと同じくらい速いです。
インデックスをお持ちの場合は、to_char()
が無効にするため、クエリで使用されません。あなたのテーブルに十分な異なる日付があり、インデックスを使用する価値があるように、それらが十分にまとまっているとしましょう。いくつかの方法でインデックスを使用するようにクエリを変更することができます。
EVENT_DATEがEVENT_DATEは時間要素がこの
where event_date >= date '2016-04-08'
and event_date < date '2016-04-09'
注意を使用含まれている場合のみ、日付要素がこの
where event_date = date '2016-04-08'
を使用含まれている場合は、その特別な方法でOracleを格納しDATE値は。それらは特定のマスクと共に格納されません。書式設定は単なる表示物です。だから私たちがする必要があるのは、意味のある形式で目標の日付を渡すことだけです。
出典
2016-04-13 07:15:07
APC
文字列に 'to_date'を実行するのではなく、' date_'である 'event_date'の' to_char'をなぜやっていますか? 'event_date'の時間コンポーネントを深夜に設定しようとしていますか?利用可能なインデックスは何ですか? 'event_date'はインデックスされていますか?テーブルにはどのようなインデックスが定義されていますか? –
私は一日をしたいと思う。 '08 -04-2016 '、' dd-mm-yyyy ')とto_date('09 -04-204-')の間にevent_dateとeventName = 'ARTICLE' の のイベントから としてselect count(* 2016 '、' dd-mm-yyyy ')' – dcieslak
テーブル構造(インデックスを含む)とクエリの実行計画を投稿してください – Aleksej