当前位置: 首页 > 知识库问答 >
问题:

在Oracle中更快地插入SQL百万行[重复]

秦德海
2023-03-14

我有一个查询,它从另一个表中填充表数据。现在它看起来像这样。

String query = "INSERT into TEMP_TABLE_ID (SELECT USERS_ID, rownum, US_NUMBER from USER_LOG_NUMBER where USERS_ID=(?))";

    int count = db.createNativeQuery(query).setParameter(1, usersId).executeUpdate();

在10 000条记录上,它执行大约10秒。但是会有10,000,000条记录的情况,恐怕它会很慢。我能做得更快吗?

共有1个答案

滕祯
2023-03-14

您可以使用批处理语句。

批处理允许您将相关SQL语句分组到一个批中,并通过一次调用将它们提交到数据库。

首先,您必须使用< code>createStatement()创建一个语句。

Statement statement = connection.createStatement();

然后使用< code>addBatch()方法在语句中添加SQL查询。

String firstQuery = "";
statement.addBatch(firstQuery);
String secondQuery = "";
statement.addBatch(secondQuery);
....
...
..
.

您可以使用任何类型的循环来添加查询。

最后,通过 executeBatch() 执行所有添加的查询。

statement.executeBatch();

祝你好运。

 类似资料:
  • 我正在尝试从一个oracle数据库迁移到另一个。我的选择查询非常复杂,它返回大约2000万条记录。当我尝试执行时: 大约需要20个小时。 有什么不同的迁移方式吗?你能给我一些建议吗? 谢谢你的建议。 编辑:我创建了一个新表格,如下所示 将表XYZ创建为从yyy join zzz join ttt等中选择a,b,c,bla blaa 大约需要2分钟。 现在我正在尝试从XYZ插入到我的原始表。 还剩1

  • 问题内容: 我有以下用C#编写的代码,但是据此,我需要4-5天的时间才能将数据从Oracle数据库迁移到Elasticsearch。我将以100批为单位插入记录。是否还有其他方法可以使400万条记录的迁移速度更快(如果可能的话,可能不到一天)? 问题答案: 该功能将对性能产生负面影响,并且您正在运行数千次。您已经在使用-它不会一次将所有四百万行都拉到您的计算机上,它基本上是一次流一次或几行。 这必

  • 有一列我想检索并插入到另一个表中例如,下面是我想检索值的第一个表 我使用MSSQL2008

  • 问题内容: 我试图找出如何使用c#在SQL Server的临时表中提高插入性能的方法。有人说我应该使用SQLBulkCopy,但是我一定做错了,因为它看起来比仅仅构建一个SQL插入字符串要慢得多。 我使用SQLBulkCopy创建表的代码如下: 这样,我的插入内容需要很长时间才能运行。我用其他方法使嵌件工作得更快: 我将插入位创建为字符串,并将其加入到我的SQL create temp table

  • 所以,我有一个Oracle数据库(在APEX中),其中有一个名为“Scheme”的列。 如下所示: 现在,我所有的表都是这样设置的,并且工作得很好,但是当我尝试在我的方案上插入时,它表示我正在尝试在主键方案ID中插入null。 我将向您展示我使用的两个SQL插入。一个是私人教练,另一个是该计划。 Peronal_Trainer有一个Personal_Trainer_ID作为主键,完全像方案一样设置

  • 问题内容: 我正在研究文件加载器程序。 该程序的目的是获取一个输入文件,对其数据进行一些转换,然后将数据上传到Oracle数据库中。 我面临的问题是我需要优化在Oracle上非常大的输入数据的插入。 我正在将数据上传到表格中,可以说是ABC。 我正在C ++程序中使用Oracle提供的OCI库。具体来说,我使用OCI连接池进行多线程并加载到ORACLE中。(http://docs.oracle.c