【问题标题】:How to optimize this? [duplicate]如何优化这个? [复制]
【发布时间】:2014-09-09 16:20:04
【问题描述】:

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毫秒的时间。

如何优化这段代码?

【问题讨论】:

标签: java sqlite optimization jdbc


【解决方案1】:

首先,你只能准备一次语句:

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();
}

【讨论】:

    【解决方案2】:

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

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

    这样你只需要执行一个查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2012-12-22
      • 2017-04-10
      • 2013-04-03
      • 2011-02-28
      相关资源
      最近更新 更多