JDBC连接数据库的问题

pc2s 2004-05-12 12:00:11
其实是一个特简单的程序,连接Oracle数据库查询一个表中的全部数据(100多个字段)。
用两种方法:

1、使用jdbc:oracle:...的方式连接,查询1000条数据,当用ResultSet对象的next()方法,遍历完全部1000条数据,居然花费38秒的时间。

2、同样的程序,使用jdbc:odbc:...的方式连接(TNS连接),同样的数据,却只需要11秒。

差距这么大吗?如果使用第一种方法,有什么办法能提高查询效率?(这要是10000条数据,还不得死机?)

...全文
88 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙亖 2004-05-14
  • 打赏
  • 举报
回复
没试过,可能是微软欺负sun,去unix上试试
pc2s 2004-05-14
  • 打赏
  • 举报
回复
怎么没人回答阿?
yoyodd 2004-05-14
  • 打赏
  • 举报
回复
这个问题没有试过!不得而知了!
pc2s 2004-05-13
  • 打赏
  • 举报
回复
用Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")连接,进行检索用38秒;
用Class.forName("oracle.jdbc.driver.OracleDriver")连接,进行检索用11秒。
其他的全一样(当然包括SQL语句)。

-------------------
写错了,正确的如下:
用Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")连接,进行检索用11秒;
用Class.forName("oracle.jdbc.driver.OracleDriver")连接,进行检索用38秒。
其他的全一样(当然包括SQL语句)。

pc2s 2004-05-13
  • 打赏
  • 举报
回复
楼上的,是jdbc:oracle...这个慢(消耗38秒),jdbc:odbc...这个快(消耗11秒)
neuhawk 2004-05-13
  • 打赏
  • 举报
回复
jdbc-odbc这种驱动肯定是很慢了拉。
pc2s 2004-05-13
  • 打赏
  • 举报
回复
难道没人能解释吗?
pc2s 2004-05-12
  • 打赏
  • 举报
回复
能详细点儿吗?
rainboy20024 2004-05-12
  • 打赏
  • 举报
回复
SQLWarning,SQLException
pc2s 2004-05-12
  • 打赏
  • 举报
回复
还有,当SQL语句出错的时候,能否从Exception中取得出错的位置?
pc2s 2004-05-12
  • 打赏
  • 举报
回复
用Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")连接,进行检索用38秒;
用Class.forName("oracle.jdbc.driver.OracleDriver")连接,进行检索用11秒。
其他的全一样(当然包括SQL语句)。
pc2s 2004-05-12
  • 打赏
  • 举报
回复
关键问题是,SQL语句是最简单的“SELECT * FORM test”。还要怎么优化?

源码如下:
public boolean execute(String LsSql) throws SQLException {
clearResult();

if(bIsSelect = oStatement.execute(LsSql)) {
oResultSet = oStatement.getResultSet();
oResultSetMetaData = oResultSet.getMetaData();
iColumnCount = oResultSetMetaData.getColumnCount();
sColumnNames = new String[iColumnCount];

for(int i = 0; i < iColumnCount; i++)
sColumnNames[i] = oResultSetMetaData.getColumnLabel(i+1);

oResultSet.setFetchSize(1000);
iRowCount = 0;
while(oResultSet.next()) iRowCount++;

oSelectResult = new Object[iRowCount][iColumnCount];
...
以下省略(没有匹配大括号,看个意思就行了)

我是想说,为什么同样的数据、同样的SQL语句,使用jdbc:oracle要比jdbc:odbc慢3倍之多。

还要,谁能解释一下SQLWarning怎么用?怎么能找到错误出在SQL语句的哪个字符上?(PL/SQL Developer就可以实现定位错误位置。别告诉我是自己做语法分析)

JDK1.3.1
lasersong2004 2004-05-12
  • 打赏
  • 举报
回复
(1)优化你的SQL语句(例如将 in 改成 exists 等等)
(2)调整你的数据库(例如添加索引等等)

(*)Select有索引的表,速度快n倍
caiyanying732 2004-05-12
  • 打赏
  • 举报
回复
看源码先
sniperlei 2004-05-12
  • 打赏
  • 举报
回复
你最好还是给出源程序
icewhite 2004-05-12
  • 打赏
  • 举报
回复
用最新的jdbc试试看!

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧