spool输出查询中涉及的多个表

6ojccjat  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(491)

我正试图找到有效的方法从数据库中提取大量数据,并将其放到云平台上进行分析(由于技术原因,无法以自动化的方式实现这一点)。对于大表,我想一次提取一个月数据的csv;然而,一个巨大的表没有日期,并且id有一个前缀,所以我不能简单地获取id的范围。所以我想我得加入另一张table。像这样:

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

问题是,我希望能够将这个查询和内部查询的结果spool到csv文件中。内部查询可能需要一些时间来运行(大约8分钟),因此理想情况下,我希望运行上面的整个查询并导出到两个位置,而不是将上面的查询和内部查询作为单独的任务运行(从而复制工作)。
这可能吗?

v2g6jxz6

v2g6jxz61#

我认为你不能同时去两个地方。但是您可以创建一个临时表并使用它:

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) 可能足以加速这两个查询。

相关问题