PreparedStatement与Statement性能详细对比

我对PreparedStatement和Statement的性能测试了一下:
 测试代码如下:
java 代码
 
  1. Connection con = getOraConnection();  
  2. String sql = "select id,name from test where id=";  
  3. String tempSql;  
  4. int count = 1000;  
  5. long time = System.currentTimeMillis();  
  6. for (int i = 0; i < count; i++) {  
  7.     Statement st = con.createStatement();  
  8.     tempSql=sql+(int) (Math.random() * 100);  
  9.     st.executeQuery(tempSql);  
  10.     st.close();  
  11. }  
  12. System.out.println("st cost:" + (System.currentTimeMillis() - time));  
  13.   
  14. String psql = "select id,name from test where id=?";  
  15. time = System.currentTimeMillis();  
  16. for (int i = 0; i < count; i++) {  
  17.     int id=(int) (Math.random() * 100);  
  18.     PreparedStatement pst = con.prepareStatement(psql);  
  19.     pst.setBigDecimal(1new BigDecimal(id));  
  20.     pst.executeQuery();  
  21.     pst.close();  
  22. }  
  23.   
  24. System.out.println("pst cost:" + (System.currentTimeMillis() - time));  
  25.   
  26. con.close();  

test表很简单,id int,name varchar(50).
对几种数据库和相应驱动程序进行测试,结果如下(ms):
oracle:        1235    1109
MSSQL2000(JTDS):391    453
MSSQL2000(MS):    453    640
Mysql5:        391    891
PostgreSQL8.1:   1078    1047
结论:
1.单并发情况下,oracle--PostgreSQL--MSSQL--MySQL的性能依次增高;
2.MySQL不支持Prepared Statement特性,已在其驱动程序的文档中证实,所以在MySQL里使用 PreparedStatement的性能尤其低,可以比Statement慢一倍以上。
而MSSQL2000下,PreparedStatement比Statement慢;
Oracle,PostgreSQL对它的支持最好,使用PreparedStatement性能比Statement高。

你可能感兴趣的:(技术话题)