提高INSERT速度

时间:2016-04-21 09:25:06

标签: java sql database insert derby

我目前正在使用以下查询仅在记录尚不存在时才插入表中,这可能会导致表扫描。它在10分钟内插入28000条记录:

INSERT INTO tblExample(column)
(SELECT ? FROM tblExample WHERE column=? HAVING COUNT(*)=0)

如果我将查询更改为以下内容,我可以在10分钟内插入98000条记录:

INSERT INTO tblExample(column) VALUES (?)

但它不会检查记录是否已经存在。

有人可以提出另一种查询方式,以便我的插入速度更快吗?

2 个答案:

答案 0 :(得分:1)

一个简单的解决方案(但不推荐)可以是简单地使用insert语句,捕获重复键异常并记录它们。假设表具有唯一的键约束。

答案 1 :(得分:1)

确保您正在检查的列[s]上有索引。一般来说,看一下数据库正在使用的查询执行计划 - 这应该告诉你时间的去向,以及如何处理它。

对于Derby db,这是how you get a plan and how to read it

Derby also has a merge command,可以作为插入 - 如果不是那里。我自己没有用过它,所以你需要测试一下它是否适合你的环境。