我目前正在使用Apache Derby作为我的应用程序的临时本地数据库,并且我想了解如何优化INSERT性能的一些提示。
当应用程序启动时,它会从CSV文件中读取记录 - 这可能是数百万,但更可能是数十万。处理完毕后,最后的SELECT查询会汇总信息。
目前大约需要1分钟才能插入6000条记录。有3个表,其中2个存储唯一数据,一个是两者之间的查找表 - 它看起来如下:
CREATE TABLE table1
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(40))
CREATE TABLE table2
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(100),
field2 INT,
field3 VARCHAR(40))
CREATE TABLE table1table2lookup
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 INT NOT NULL,
field2 INT NOT NULL)
我目前使用参数化 PreparedStatements 和批处理来尝试提高速度。
我还关闭了自动提交模式,以便我只提交批量插入。
答案 0 :(得分:3)