gpt4 book ai didi

sql - 按行和日期范围过滤 SQL 查询

转载 作者:行者123 更新时间:2023-12-01 13:03:25 25 4
gpt4 key购买 nike

我有一个时间索引的 Oracle 数据库,我试图按日期范围查询它。我还想在查询中减少数据,这样我就不会被太多数据淹没。

独立日期查询(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'

stand along reduction query (1017 in 0.89s):

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)

显然我在这里做的事情根本上是错误的,但我不知道还有什么方法可以按日期查询和减少数据。

最佳答案

您正在针对不在所选日期范围内的行评估缩减逻辑。

将缩减逻辑应用于包含您的日期范围的子查询。

后来:这就是我的意思。

select oracle_time from (
select oracle_time, rownum as limited_row_num
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'
) as time_range
where mod(limited_row_num,50) = 0

关于sql - 按行和日期范围过滤 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com