通过JDBC方式查询数据库生成数据效率低,请问下问题出在什么地方或者有什么解决方案?
测试环境:
WindowsXP SP3 + SQLServer 2005 + JBOSS 5.1.0GA + sqljdbc.jar
数据源配置
<connection-url>jdbc:sqlserver://127.0.0.1:1433;DatabaseName=uh_real</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<user-name>test</user-name>
<password>test</password>
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
测试代码
ResultSet rs;
PreparedStatement pstmt;
..................
rs = pstmt.executeQuery();
MyObject obj;
while (rs.next()) {
obj = new MyObject();
obj.setId(rs.getInt("id"));
..........
}
.........
MyObject的字段不超过20个
测试结果,pstmt.executeQuery();花了大概200ms,取出500条左右的纪录,
然后执行 while(rs.next())循环转化成对象花去大概5s,很不理想。
通过SQL Server Management Studio查询并显示同样的纪录大概200ms
请教下大家,问题出在什么地方??谢谢
[解决办法]
与机器性能有关,你如果使用Hibernate持久 用HQL语言获取会快点
[解决办法]
在url上增加“SelectMethod=cursor”
另外尽量减少字段,尤其是较大的字段。
[解决办法]
pstmt.setFetchSize(1000) 试试
[解决办法]
jdbc 性能可比hibernate等都好
[解决办法]
JDBC直接访问数据库,没经过一些中间处理和转换过程,效率要比Hibernate好
但编码的复杂度要比Hibernate高很多!
[解决办法]
你试试看把left join里面的条件中等号两边的内容对调一下有没有效果。
啥根据都没有,完全瞎说的
留名学习
good luck
[解决办法]