如何快速更新表

时间:2016-09-23 10:02:23

标签: sqlite servlets prepared-statement

我有一个Web应用程序(使用servlet和JSP页面构建),数据库为SQLITE

在某些时候,我想检查整个表格,并在需要时替换所有记录。 我尝试更新我的表格(我使用PreparedStatements

sq = "INSERT OR REPLACE INTO myTable VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";

所有记录都是5000,这个过程需要几分钟才能完成......我注意到,对于每条记录,不管它是否被更改,该行都会被修改,因为我总是rowsAffected = 1

for(Label l:labels){
    stm.setString(1, l.getOldName());
    //etc...

    rowsAffected = stm.executeUpdate();
    System.out.println("rowsAffected = " + rowsAffected);
}

还有其他更优化的方式来更新我的桌子吗?

1 个答案:

答案 0 :(得分:0)

INSERT语句总是添加一行。所有REPLACE子句都是删除旧行,如果存在冲突的话。

如果您想避免不必要地更改行,您必须首先执行SELECT以检查旧值,然后根据需要执行UPDATE或INSERT操作。

为了加快这个过程,将整个循环放入一个事务中。