【发布时间】:2011-05-25 15:00:06
【问题描述】:
我有一个时间索引的 Oracle 数据库,我正在尝试按日期范围进行查询。我还想在查询中减少数据,以免数据过多。
独立日期查询(0.203s 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)
显然,我在这里做的事情根本上是错误的,但我不知道如何同时按日期查询和减少数据。
【问题讨论】: