Oracle

如何在 Oracle 上並行執行 INSERT INTO AS SELECT?

  • October 27, 2020

我有一個非常大的表 AUD$,我想將它複製到另一個具有相同結構 AUD_BACKUP 的空表。

INSERT INTO TEST_USER.AUD_BACKUP 
   SELECT * FROM SYS.AUD$;
COMMIT;

如何將並行用於 INSERT 和 SELECT ?我有能力執行 100 次並行。我在 Oracle db 12.2 上。

您應該使用直接路徑 INSERT。

對於 select,您可以在同一語句中使用 PARALLEL 提示。您可以使用不帶任何參數的 PARALLEL 或使用 PARALLEL(n)和 n 個執行緒

如果您需要更多解釋,請告訴我。

解釋

我將嘗試向您展示一個 MySql 範例,因為我沒有找到可以幫助我執行 Oracle quary 的線上編譯器。

程式碼部分

創建兩個表

-- table 1
CREATE TABLE table1(
   int id integer,
   title varchar(100)
);
-- table 1 backup
CREATE TABLE backup_table1(
   int id integer,
   title varchar(100)
);

插入

-- insert data into table1
INSERT INTO table1 (id, title)
VALUES (1, "hello world!");
-- table1_backup
INSERT INTO backup_table1 (id, title)
SELECT id, title FROM table1;

輸出

SELECT * FROM backup_table1;

id     title
1      hello world!

參考

SQL INSERT INTO SELECT 語句

引用自:https://dba.stackexchange.com/questions/248512