我目前正在使用以下查询仅在记录尚不存在时才插入表中,这可能会导致表扫描。它在10分钟内插入28000条记录:
INSERT INTO tblExample(column)
(SELECT ? FROM tblExample WHERE column=? HAVING COUNT(*)=0)
如果我将查询更改为以下内容,我可以在10分钟内插入98000条记录:
INSERT INTO tblExample(column) VALUES (?)
但它不会检查记录是否已经存在。
有人可以提出另一种查询方式,以便我的插入速度更快吗?
答案 0 :(得分:1)
一个简单的解决方案(但不推荐)可以是简单地使用insert
语句,捕获重复键异常并记录它们。假设表具有唯一的键约束。
答案 1 :(得分:1)
确保您正在检查的列[s]上有索引。一般来说,看一下数据库正在使用的查询执行计划 - 这应该告诉你时间的去向,以及如何处理它。
对于Derby db,这是how you get a plan and how to read it。
Derby also has a merge command,可以作为插入 - 如果不是那里。我自己没有用过它,所以你需要测试一下它是否适合你的环境。