优化脚本以在 SQL Navigator 中更快地插入 10,000 条记录?

Optimizing script for faster insert of 10,000 records in SQL Navigator?

提问人:Bimesh Perera 提问时间:10/18/2023 最后编辑:marc_sBimesh Perera 更新时间:10/19/2023 访问量:37

问:

我正在尝试使用 SQL Navigator 中的语句将 10,000 条记录插入到表中。该过程花费的时间比预期的要长。有没有人对如何加快此操作有任何建议?INSERT

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Alex', 'Alex Perera', 'Abcd 300', 'Stavanger', '4006', 'Norway');

...
...
... 10,000 records
...
...

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Bimesh', 'Bimesh Perera', '97 Elgern', 'London', '2008', 'UK');
PLSQL SQL-导航器

评论


答:

3赞 O. Jones 10/18/2023 #1

将每千个插入(左右)包装在一个 PL/SQL 匿名块中:

BEGIN
   INSERT INTO ...

   ...
   ... 1,000 records
   ...
END;
/

BEGIN
   INSERT INTO ...

   ...
   ... The next 1,000 records
   ...
END;
/
1赞 widesense 10/18/2023 #2

脚本的问题在于每个插入查询都将在单独的事务中运行,因此会发生事务和查询开销。使用以下任何一种方法,您都可以克服交易开销。

  1. 使其成为多值插入,这将减少查询开销,并且您将看到一些改进。
  2. 使用复制命令,其想法是将值放入 csv 文件中并使用它,这比插入查询更好,并且可以产生更好的性能。