JDBC获取SQL查询语句返回记录数的三种方式效率比较
来源:互联网 发布:mac 上的磁盘修复工具 编辑:程序博客网 时间:2024/04/28 17:46
测试代码:
//================================================================================================
//公用代码
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对象获取来得实惠。
- JDBC获取SQL查询语句返回记录数的三种方式效率比较
- JDBC获取SQL查询语句返回记录数的三种方式效率比较
- Oracle_查询当天记录 三种方法效率比较
- PHP查询语句,返回总记录数
- jdbc statement 三种方式的比较
- SQL删除语句返回记录数的问题
- 得到SQL语句返回的记录条数(总数)
- sql语句,限制返回记录条数
- 用sql语句查询不定条数的记录
- 如何用一个SQL语句查询多个表的记录数
- 如何用一个SQL语句查询多个表的记录数
- sql语句的优化分析之一查询语句中左连接和函数效率分析比较
- Hibernate查询的各种方式效率比较
- Hibernate查询的各种方式效率比较
- Hibernate查询的各种方式效率比较
- Hibernate查询的各种方式效率比较
- jdbc查询记录数
- 提高sql语句查询效率的方法
- android的IBINDER机制
- 敏捷开发中编写高质量Java代码
- 如何设置MFC静态文本背景为透明色?
- 四道有趣的单链表面试题(单链表反序、找出链表的中间元素、链表排序、判断一个单链表是否有环)
- Ubuntu打印慢的处理
- JDBC获取SQL查询语句返回记录数的三种方式效率比较
- 我来了
- GPRS与IP
- PB5.0 features/sysgen参数和ceconfig.h中宏定义的对应关系
- 性能优化技巧
- Red5 0.8 安装
- PB5.0 features/sysgen参数和ceconfig.h中宏定义的对应关系
- PB5.0 features/sysgen参数和ceconfig.h中宏定义的对应关系
- 用 JS访问操作iframe里的dom