我需要在游标中插入大约300000行的一些插入,然而这运行得很慢,有关如何让它运行得更快的任何想法?我可以通过批量提交加快速度吗?所以例如我会在第1000行之后执行提交
DECLARE
CURSOR test_cursor IS
SELECT a from database.mytable
BEGIN
FOR curRow IN test_cursor LOOP
insert into tableb (testval)
values ('something');
commit;
END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)
300000行不是那么多行.除非每行都非常大,否则不应在批处理中间提交.
中间提交只会实现:
如果你的进程实际上是一个在循环中有一个插入的游标,你应该运行一个语句:
BEGIN
INSERT INTO tableb (col1..coln) (SELECT col1..coln FROM database.mytable);
END;
Run Code Online (Sandbox Code Playgroud)
如果您仍然需要额外的性能,可以考虑直接插入和并行操作,但可能是"仅"300k行的过度优化.
到目前为止,您可以使用的最大优化是根据集合进行思考,而不是由批量单行语句组成的传统过程方法.
归档时间: |
|
查看次数: |
6001 次 |
最近记录: |