Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么更新需要很长时间,而不是在SpringJDBCTemplateBatchUpdate中插入?_Java_Mysql_Spring Jdbc_Jdbctemplate - Fatal编程技术网

Java 为什么更新需要很长时间,而不是在SpringJDBCTemplateBatchUpdate中插入?

Java 为什么更新需要很长时间,而不是在SpringJDBCTemplateBatchUpdate中插入?,java,mysql,spring-jdbc,jdbctemplate,Java,Mysql,Spring Jdbc,Jdbctemplate,我正在尝试对3000条记录进行批量更新。完成大约需要15秒,但插入只需1秒 还包括rewriteBatchedStatements=true。我还需要做什么吗 下面是我的代码。(不包括异常处理和成功与失败计数/ID部分。它们对于更新和插入都是相同的) 使用的技术:spring、jdbctemplate、mysql、java、intellij idea result = jdbcTemplate.batchUpdate( //"insert into xxx(a

我正在尝试对3000条记录进行批量更新。完成大约需要15秒,但插入只需1秒

还包括
rewriteBatchedStatements=true
。我还需要做什么吗

下面是我的代码。(不包括异常处理和成功与失败计数/ID部分。它们对于更新和插入都是相同的)

使用的技术:spring、jdbctemplate、mysql、java、intellij idea

  result = jdbcTemplate.batchUpdate(
                //"insert into xxx(aaa,bbb,item_code) values(?,?,?)",
                        "update ignore xxx set aaa = ?, bbb= ? where item_code = ?",
                        new BatchPreparedStatementSetter() {
                    public void setValues(PreparedStatement ps,int i) throws SQLException {
                        ps.setDouble(1, Double.parseDouble(new JSONObject(jsonArray.get(i).toString()).get("aaa").toString()));
                        ps.setDouble(2, Double.parseDouble(new JSONObject(jsonArray.get(i).toString()).get("bbb").toString()));
                        ps.setString(3, new JSONObject(jsonArray.get(i).toString()).get("code").toString());
                    }

                    public int getBatchSize() {
                        return jsonArray.length();
                    }
                } );

还包括UseServerPrepsmts=false

这里也提出了类似的问题:

Jdbc性能改进提示:

是否有DB中项目代码的索引?如果没有,您可以尝试创建一个。@Vasan它是一个唯一的键列,因此它已经被索引了。