【问题标题】:Select on insert插入时选择
【发布时间】:2025-11-22 09:55:02
【问题描述】:

我有一个关于 Oracle SQL DB 的查询。

我们正在使用一个插入语句(结合 select 语句)将 100 万条记录插入到数据库中。

INSERT INTO <TABLE_NAME> VALUES(<COL1,COL2,COL3>,....etc)
SELECT * FROM <TABLE_NAME> // this select query retrieves 1 million records

执行插入后,有没有办法取回所有记录?

基本上,我不想执行另一个 select 语句来获取这些记录。相反,我试图找到一种优化的方式。

【问题讨论】:

    标签: oracle oracle11g spring-jdbc


    【解决方案1】:

    我会首先运行 select 语句来创建一个私有临时表。这会创建一个内存表,但实际上并没有运行到磁盘。

    CREATE PRIVATE TEMPORARY TABLE TEMP_TABLE as
    SELECT * FROM <TABLE_NAME> // this select query retrieves 1 million records
    

    然后从临时表运行插入。这只会将数据写入您需要的地方一次。 并且数据仍然可以在临时表中使用,以便在会话中使用。 当会话关闭时,临时表中的数据不再可用。

    【讨论】: