【发布时间】:2018-12-19 17:22:44
【问题描述】:
我使用的是 Oracle 11GR2,当我尝试向表中插入大量行时出现问题。 这是我的桌子:
CREATE TABLE ref_bic (
id_bic NUMBER(9),
country_id NUMBER(9) NOT NULL,
bank_code VARCHAR(5),
bic_code VARCHAR(20),
bank_name VARCHAR(150) NOT NULL,
CONSTRAINT pk_ref_bic PRIMARY KEY (id_bic)
);
这是我要插入的示例:
INSERT INTO REF_BIC (country_id, bank_code, bic_code, bank_name) VALUES (123, '123456', '12345', 'SOME BANK NAME');
请注意,id_bic 是自行生成的。
现在这是我的问题,第一次创建数据库时,我有超过 30k 行要插入到我的数据库中,每次插入所有数据都需要超过 30 分钟。
听说可以使用 PARALLEL 和 APPEND 插入更快,而且唯一的要求就是使用
ALTER SESSION FORCE PARALLEL DML;
我试过了,好像不行
INSERT /*+ APPEND PARALLEL(REF_BIC) */ INTO REF_BIC (country_id, bank_code, bic_code, bank_name) VALUES (123, '123456', '12345', 'SOME BANK NAME');
它没有被解释,即使我去掉/* */,它也只会让我出错。
现在,似乎并行插入需要来自像
这样的子查询INSERT /*+ APPEND PARALLEL(REF_BIC) */ INTO REF_BIC SELECT * FROM SOME_TABLE;
但我不能使用子查询,因为我是第一次创建我的数据库,它完全是空的。
所以这是我的问题:
- 并行插入是否可以在没有子查询的情况下工作?
- 如果没有,我怎样才能更快地插入我的
【问题讨论】:
标签: oracle parallel-processing insert