日付範囲で照会しようとしている時間インデックス付きのOracleDBがあります。また、大量のデータに圧倒されないように、クエリでデータ削減を行いたいと思います。
スタンドアロンの日付クエリ(0.203秒で2352行):
select oracle_time from t_ssv_soh_packets0
where oracle_time >= TIMESTAMP '2009-01-01 00:00:00'
AND oracle_time <= TIMESTAMP '2009-01-31 00:00:00'
スタンドアロングリダクションクエリ(0.89秒で1017):
select oracle_time from t_ssv_soh_packets0
where (rowid,0) in (select rowid, mod(rownum,50) from t_ssv_soh_packets0)
それらを組み合わせようとすると、永遠にかかります(32.547秒で48行):
select oracle_time from t_ssv_soh_packets0
where oracle_time >= TIMESTAMP '2009-01-01 00:00:00'
AND oracle_time <= TIMESTAMP '2009-01-31 00:00:00'
AND (rowid,0) in (select rowid, mod(rownum,50) from t_ssv_soh_packets0)
明らかに、私はここで根本的に間違ったことをしていますが、日付によるクエリとデータの削減の両方を行う方法が他にわかりません。