又是關於prepareStatement提高效能的問題,請幫忙看一下!

testu發表於2004-06-20
我寫了一段小程式,想測試一下使用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 class="indent">

以上程式碼,執行了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 class="indent">

以上程式碼,執行了125秒

請問,為什麼使用Statement僅僅只慢了15秒?????????


謝謝

相關文章