我的服务器结果集在循环时需要很长时间

时间:2016-03-07 03:41:17

标签: java mysql sql-server-2012

当我尝试使用java应用程序进行连接时,我的sql服务器面临性能问题。 sqljdbc4-4.0是我的驱动程序版本。看起来这是最新的。

当我使用带有set paramerter选项的PreparedStatemnt并且在特定次数的迭代之后循环通过结果集时,执行停止了5min并再次开始迭代时出现问题。这种停止在一些固定的迭代中发生。

即使是非常简单的查询,也会出现这种情况。

PreparedStatemnt ps = null;
ResultSet rs = null;
ps = con.prepareStatemnt("select id,name,phone from Table1 where name = ?");
ps.setString(1, "Raj");

rs = ps.executeQuery();   // OK here
int i=0;
while(rs.next()){            // hangs here
   System.out.println(i++);
}

但是,如果我没有设置参数并将参数连接到这样的查询,它可以正常工作,

PreparedStatemnt ps = null;
ResultSet rs = null;
ps = con.prepareStatemnt("select id,name,phone from Table1 where name = 'Bob' ");

rs = ps.executeQuery();   // OK here
int i=0;
while(rs.next()){            // OK now
    System.out.println(i++);
}

当我使用没有where条件的查询时,它完全没有挂起。

这告诉我,当我使用set参数选项时会出现问题。我试图使用顶行来查看问题是否与大量行有关。但即使我用100设置顶部。对于这100行本身,迭代在第28次迭代和第66次迭代时停止了2次。我认为它挂起的迭代取决于列数的大小。

可以帮助我解决这个问题。

先谢谢, SYAM。

1 个答案:

答案 0 :(得分:0)

你的数据库中有更多,更多的Rajs而不是Bobs。

它与您是否使用PreparedStatement参数无关。