小编Dav*_*ili的帖子

JDBC删除工作缓慢

我在sql server上的JDBC Delete语句中遇到性能问题.表Config包含大约700万行,表详细信息:

列:

  1. TERMINAL_ID(varchar(50))
  2. ATTRIBUTE(VARCHAR(50))
  3. VALUE(nvarchar(1000))

索引:TERMINAL_IDATTRIBUTE上的 群集唯一索引

代码看起来像这样,其中属性长度为1500,并且该程序需要大约1小时才能完成,这对于删除来说非常慢:

     PreparedStatement statement = null;
     String sql = "DELETE FROM Config WHERE TERMINAL_ID = ? AND ATTRIBUTE = ?");
     for (String attribute : attributes) {
            if (statement == null) {
                statement = connection.prepareStatement(sqlDelete);
            }
            statement.setString(1, terminalId);
            statement.setString(2, attribute);
            statement.executeUpdate();
      }
Run Code Online (Sandbox Code Playgroud)

当我在Management Studio中运行此查询1500次时,只需几秒钟即可删除.执行计划如下所示: 在此输入图像描述 当行数很小时,问题就会消失.

当我使用createStatement而不是prepareStatement时,问题就出现了.

任何的想法 ?

java sql-server jdbc

5
推荐指数
1
解决办法
1373
查看次数

标签 统计

java ×1

jdbc ×1

sql-server ×1