假脱机输出查询中涉及的多个表

问题描述 投票:0回答:1

我正在尝试找到有效的方法来从数据库中提取大量数据,并将其放在云平台上进行分析(出于技术原因,无法自动进行此操作)。对于大表,我想一次提取一个月的数据的CSV。但是,一个大表没有日期,并且ID具有前缀,所以我不能简单地获得一系列ID。所以我认为我必须加入另一个表。像这样的东西:

select * from big_table
inner join (
select * from table2 where date between to_date("'2020-04-01'","yyyy-mm-dd") and to_date("'2020-05-01'","yyyy-mm-dd") query_result
on big_table.id = query_result.id

事实是,我希望能够将该查询和内部查询的结果假脱机到CSV到单独的文件中。内部查询可能需要花费一些时间(大约8分钟)来运行,因此理想情况下,我想在上面运行整个查询并导出到两个位置,而不是将上面的查询和内部查询作为单独的任务运行(从而将工作)。

这可能吗?

sql oracle oracle-sqldeveloper sqlplus
1个回答
0
投票

我认为您不能同时后台处理到两个位置。但是您可以创建一个临时表并使用它:

create temp table temp_table2 as
    select t2.*
    from table2 t2
    where date >= date '2020-04-01' and
          date < date '2020-05-01';

然后,您可能要为此创建索引:

create index idx_temp_table2_id on table2(id);

然后:

select bt.*
from big_table bt join
     temp_table2 t2
     on bt.id = t2.id;

您仍然需要将其短矛假脱机处理。

注意:table2(date)上的简单索引可能足以加快both查询。

© www.soinside.com 2019 - 2024. All rights reserved.