如何优化这个?

时间:2014-07-18 13:44:00

标签: java sqlite optimization jdbc

java sqlite插入很慢......  我的代码就是这个

        for(int i = 1 ; i <= list.size(); i++ ) {
        query="INSERT OR REPLACE INTO highErrorProbabillityDB VALUES (?,?);";
        prep = localError.prepareStatement(query);
        prep.setString(1, list.get(i-1).get("ki"));
        prep.setInt(2, Integer.parseInt(list.get(i-1).get("ccolor")));
        prep.executeUpdate();
        }

第一列是主键,平均而言,需要大约1到150毫秒的时间。

如何优化此代码?

2 个答案:

答案 0 :(得分:2)

首先,您只能准备一次声明:

query="INSERT OR REPLACE INTO highErrorProbabillityDB VALUES (?,?);";
prep = localError.prepareStatement(query);
for(int i = 1 ; i <= list.size(); i++ ) {
    prep.setString(1, list.get(i-1).get("ki"));
    prep.setInt(2, Integer.parseInt(list.get(i-1).get("ccolor")));
    prep.executeUpdate();
}

答案 1 :(得分:0)

如果你有SQLite版本3.7.11或更高版本,那么你可以像这样一次多次插入

INSERT OR REPLACE INTO highErrorProbabillityDB 
VALUES (1,4),
       (2,5),
       (3,6),
       ...

这样你只需执行一次查询。