增加 INSERT 速度

Increasing INSERT speed

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

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

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

INSERT INTO tblExample(column) VALUES (?)

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

谁能建议另一种查询方式,使我的插入速度更快?

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

确保您在检查的列[s] 上有一个索引。通常,查看数据库正在使用的查询执行计划 - 这应该会告诉您时间流向何处,以及如何应对。

对于 Derby 数据库,这是 how you get a plan and how to read it

Derby also has a merge command,它可以充当 insert-if-not-there。我自己没用过,所以你需要测试一下,看看它是否适合你的情况。