您的位置:首页 > 数据库

JDBC获取SQL查询语句返回记录数的三种方式效率比较

2009-10-29 20:35 676 查看
版权声明
:转载时请以超链接形式标明文章原始出处和作者信息及本声明

http://huahuazhu.blogbus.com/logs/22174599.html





测试代码:

//================================================================================================

//公用代码

Connection cn = DBManager.getConn("jdbc:oracle:thin:u/p@dbs:1521:orcl");

String selectSQL = "SELECT COL1 FROM TB1";

//各方式代码……

DBManager.closeConn(cn);

//================================================================================================

//方式一:利用ResultSet的getRow方法

Statement stmt = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

ResultSet rs = stmt.executeQuery(selectSQL);

rs.last();

logger.info("利用ResultSet的getRow方法:" + rs.getRow());

rs.close();

stmt.close();

//================================================================================================

//方式二:自行迭代方式

Statement stmt = cn.createStatement();

ResultSet rs = stmt.executeQuery(selectSQL);

int i = -1;

while (rs.next()) {

i++;

}

logger.info("自行迭代方式:" + i);

rs.close();

stmt.close();

//================================================================================================

//方式三:SELECT COUNT(*) FROM (SQL)方式

String newSQL = "SELECT COUNT(1) AS CT FROM (" + selectSQL + ")";

Statement stmt = cn.createStatement();

ResultSet rs = stmt.executeQuery(newSQL);

rs.next();

logger.info("SELECT COUNT(*) AS CT FROM (SQL)方式:" + rs.getInt(1));

rs.close();

stmt.close();

//================================================================================================

以下是对 7000 条数据的测试结果

1,利用ResultSet的getRow方法

<耗时>:906(ms)。

<耗时>:860(ms)。

<耗时>:781(ms)。

<耗时>:766(ms)。

<耗时>:797(ms)。

2,自行迭代方式

<耗时>:672(ms)。

<耗时>:688(ms)。

<耗时>:672(ms)。

<耗时>:687(ms)。

<耗时>:688(ms)。

3,SELECT COUNT(*) AS CT FROM (SQL)方式

<耗时>:500(ms)。

<耗时>:484(ms)。

<耗时>:500(ms)。

<耗时>:484(ms)。

<耗时>:500(ms)。

总体上看,三种方式貌视差不大,相互间仅100、200ms的差别。

从测试结果看,第三种方式效率最高,自行迭代次之,ResultSet的getRow方法效率最低。

由此看来,要获取 一条SQL查询语句返回的记录数,单执行一条SQL去获取要比通过ResultSet对象获取来得实惠。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐