我目前正在使用Apache Derby作爲我的應用程序的臨時本地數據庫,我想了解如何優化INSERT性能的一些提示。Apache Derby和Java - 優化插入
當應用程序啓動時,它會從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)
我目前使用參數化的PreparedStatement和配料嘗試增加速度。
我也關掉了自動提交模式,以便我只在批量插入時提交。
您是否嘗試過使用Derby的內置CSV文件導入工具?請參閱http://stackoverflow.com/a/2339690/193453 –