当前位置: 首页 > news >正文

Oracle查询大表的全部数据

2000w的大表 

 表结构如下,其中id是索引

查询处理慢的写法

List<String> queryLoidForPage(Integer startNum,Integer endNum){try {Connection oracleConnection = initBean.oracleConnection;Statement stmt = oracleConnection.createStatement();// 4.执行查询 long l = System.currentTimeMillis();ResultSet rs = stmt.executeQuery("SELECT username FROM LOID_TABLE_ID where id BETWEEN  "+startNum+" and "+endNum);System.out.println("查询耗时:"+(System.currentTimeMillis()-l));List<String> loids = new ArrayList<>();// 5.处理结果集 System.out.println("开始处理结果集");long l1 = System.currentTimeMillis();while(rs.next()){loids.add(rs.getString("username"));}System.out.println("处理结果集耗时:"+(System.currentTimeMillis()-l1));return loids;}catch (Exception e){e.printStackTrace();return new ArrayList<>();}}
开始查询0到10000条数据
查询耗时:79
开始处理结果集
处理结果集耗时:35988
结束查询0到10000条数据,耗时:36101
开始查询10000到20000条数据
查询耗时:36
开始处理结果集
处理结果集耗时:35910
结束查询10000到20000条数据,耗时:35946

10000条记录查询出来到处理好要35秒左右

查询处理快的写法

List<String> queryLoidForPage(Integer startNum,Integer endNum){try {Connection oracleConnection = initBean.oracleConnection;PreparedStatement pstmt = oracleConnection.prepareStatement("SELECT username FROM LOID_TABLE_ID WHERE id BETWEEN ? AND ?");// 设置查询参数pstmt.setInt(1, startNum);pstmt.setInt(2, endNum);// 设置 fetch size 以提高查询效率 根据实际情况调整 fetch sizepstmt.setFetchSize(1000);// 4.执行查询 long l = System.currentTimeMillis();ResultSet rs = pstmt.executeQuery();System.out.println("查询耗时:"+(System.currentTimeMillis()-l));List<String> loids = new ArrayList<>();// 5.处理结果集 System.out.println("开始处理结果集");long l1 = System.currentTimeMillis();while(rs.next()){loids.add(rs.getString("username"));}System.out.println("处理结果集耗时:"+(System.currentTimeMillis()-l1));return loids;}catch (Exception e){e.printStackTrace();return new ArrayList<>();}}
开始查询0到10000条数据
查询耗时:85
开始处理结果集
处理结果集耗时:370
结束查询0到10000条数据,耗时:498
开始查询10000到20000条数据
查询耗时:37
开始处理结果集
处理结果集耗时:370
结束查询10000到20000条数据,耗时:407
开始查询20000到30000条数据
查询耗时:36
开始处理结果集
处理结果集耗时:365
结束查询20000到30000条数据,耗时:403

10000条记录查询加处理400毫秒

总结:尽量使用预处理查询,设置fetch size,即pstmt.setFetchSize(1000)

相关文章:

  • JDBC 初认识、速了解
  • 谷云科技iPaaS集成平台4月发布新版本V7.4
  • 谷歌发布统一安全平台:让企业安全防护更简单
  • Spring如何解决项目中的循环依赖问题?
  • AI日报 - 2025年04月16日
  • 10 穴 汽车连接器的15个设计特点
  • 【AGI】MCP生态的“飞轮效应”
  • [随笔杂谈] 计算机编程 —— 通用学习等级体系
  • 数据库—函数笔记
  • 智慧声防:构筑海滨浴场安全屏障的应急广播系
  • 设计和实现一个基于 DDS(直接数字频率合成) 的波形发生器
  • WPF静态资源StaticResource和动态资源DynamicResource有什么区别,x:Static又是什么意思?
  • 在Android Studio中,`Settings`里的Gradle路径、环境变量以及`gradle - wrapper.properties`文件关联
  • 【面向对象设计C++--翁恺】05-时钟例子+06-成员变量+07-构造和析构+08-对象初始化
  • 2025年最新图像生成模型调研报告
  • 大模型Qwen32b(FP16精度)部署所需的显存大小和并发数计算分析
  • 数据库ocp证书是什么水平
  • Spring-Bean的生命周期
  • 设计模式每日硬核训练 Day 12:装饰器模式(Decorator Pattern)完整讲解与实战应用
  • 2025年RIE SCI2区:三角变异黏菌算法TMSMA,深度解析+性能实测
  • 云南禄丰尾矿坍塌事故搜救正在进行,被掩埋的四辆工程车已找到
  • 金正恩视察重要坦克厂并强调更迭陆军装备
  • 本周看啥|《乘风》迎来师姐们,《天赐》王蓉搭Ella
  • 韩国代总统、国务总理韩德洙宣布辞职,将择期宣布参选总统
  • 中国金茂向滨江集团提供11.21亿元诚意金借款,拟合作开发3月获取的地块
  • 国务院食安办:加强五一假期食品生产、销售、餐饮服务环节监管