当前位置: 首页 > 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,深度解析+性能实测
  • 上海天文馆加持,书友可在徐家汇书院“飞越银河系”!
  • 商标乱象调查:“120W”充电器功率仅12W,120W为商标名
  • 牛市早报|特朗普称或将“大幅降低”对华关税,外交部回应
  • 海南:谈话提醒9名缺点明显或有苗头性、倾向性问题的省管干部
  • 湃书单|澎湃新闻编辑们在读的19本书:在工作中迷失
  • 正荣地产旗下“H20正荣2”债未能于宽限期内支付分期偿付款,尚未就新兑付方案达成一致