我写了一段小程序,想测试一下使用prepareStatement到底比Statement快多少:(执行30万次insert)
conn = dataSource.getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement("insert into test values(?,?)");
for(int i=0;i<300000;i++)
{
pstmt.setObject(1, new Integer(i+1));
pstmt.setObject(2, "xxx"+i);
int rowCount = pstmt.executeUpdate();
if( rowCount !=1 ) throw new Exception("insert error:["+(i+1)+"].");
}
conn.commit();
<p>
|
以上代码,执行了110秒
我的运行环境是:
JDK 1.4.2
MYSQL 4.0
p4 1.7G 256M
之后,我改用Statement,做同样的事情:
conn = dataSource.getConnection();
conn.setAutoCommit(false);
stmt = conn.createStatement();
for(int i=0;i<300000;i++)
{
int rowCount = stmt.executeUpdate("insert into test values("+(i+1)+",'s"+(i+1)+"')");
if( rowCount !=1 ) throw new Exception("insert error:["+(i+1)+"].");
}
conn.commit();
<p>
|
以上代码,执行了125秒
请问,为什么使用Statement仅仅只慢了15秒?????????
谢谢