社区
Oracle
帖子详情
oracle查询效率:一次查询100万条记录 VS 100万次查询,每次查一条记录
amo1101
2011-03-16 11:13:04
请教各位大侠:
利用OCI接口,在海量的数据里(例如3000万条记录),查询100万条记录,采用两种方法:
1、一次查询出100万条记录
2、一次查询一条记录,连续查询100万次
以上两种方式的效率相差有多大,主要是哪个地方消耗了性能?
我认为第二种方式的效率会比较低,如何提高这种方式的查询性能呢?
请各位高手不啬赐教哦!
...全文
2151
11
打赏
收藏
oracle查询效率:一次查询100万条记录 VS 100万次查询,每次查一条记录
请教各位大侠: 利用OCI接口,在海量的数据里(例如3000万条记录),查询100万条记录,采用两种方法: 1、一次查询出100万条记录 2、一次查询一条记录,连续查询100万次 以上两种方式的效率相差有多大,主要是哪个地方消耗了性能? 我认为第二种方式的效率会比较低,如何提高这种方式的查询性能呢? 请各位高手不啬赐教哦!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bzr2004
2011-03-22
打赏
举报
回复
第一种方法要求客户端的内在较大,并且在从服务器导出到前端时,占用服务器内在较多;
第二种方法查询速度整体感觉会比第一种差,主要差在,每次都会从服务器到客户端传数据,但对机器性能影响不大
amo1101
2011-03-21
打赏
举报
回复
[Quote=引用 8 楼 zengjc 的回复:]
1. 从技术角度来看,
如果是oltp的系统,你可以通过走索引的方式来查询,而你又要Fetch到其他接口,那么合适的分批可以提高性能,比如1万条一批。
如果是olap的系统,可以通过增大并发,use_hash方式来查询,一次性的查询并传输。
查询是一个问题,但对接收数据的系统影响更大。一般来说,分批的接收数据并处理适用的范围广一点,但如果是olap系统的话,一次处理100万数据倒……
[/Quote]
之所以要这样做,是因为要实现一个数据导出系统,根据一个主键列表,从oralce数据库中获取由主键关联起来的数据(可能存在与多张数据表中)。
zengjc
2011-03-18
打赏
举报
回复
1. 从技术角度来看,
如果是oltp的系统,你可以通过走索引的方式来查询,而你又要Fetch到其他接口,那么合适的分批可以提高性能,比如1万条一批。
如果是olap的系统,可以通过增大并发,use_hash方式来查询,一次性的查询并传输。
查询是一个问题,但对接收数据的系统影响更大。一般来说,分批的接收数据并处理适用的范围广一点,但如果是olap系统的话,一次处理100万数据倒会快点。
2. 从需求看,还需要LZ讲清楚为啥要做这个事情,是否可以通过其他的方式来达到目的,而不是仅仅考虑是否能完成100万数据的查询和处理。
yoyoapple9
2011-03-18
打赏
举报
回复
肯定第一种查询快了,但是一次查询100W条查询,然后导出,太恐怖了吧。
可以按表里面一个索引字段,进行分段查询。
比如说创建日期,按年度导出
changhe325
2011-03-17
打赏
举报
回复
有没有折中的方法。比如一次1000或10000。。
amo1101
2011-03-16
打赏
举报
回复
补充说明一下,查询的时候会进行bind,查询之后,fetch到应用程序中。
现在需要采用第二种方式,但担心数据量很大的时候,性能会很低,所以想咨询一下,改如何进行调优?
ilovemk
2011-03-16
打赏
举报
回复
加快海量查询的方法无非就是索引和分区两种,不过最重要的还是要测试。
amo1101
2011-03-16
打赏
举报
回复
是导出的,会Fetch过来
wffffc
2011-03-16
打赏
举报
回复
一次查100w是导出用吗?不然的话就用分页查询吧,没有人会看完100w条数据
Oracle
查
询
前
100
万条
数据
Oracle
不支持select top语句,在
Oracle
中经常是用order by跟rownumselect 列名1 ...列名n from(select 列名1 ...列名n from 表名 order by 列名1)where rownum <=N(抽出
记录
数)order by rownum asc如:按姓名排序取出前十条数据select id,name from (select...
Mybatis
查
询
Oracle
一次
查
询
1w条数数据耗时6s分析
Mybatis
查
询
Oracle
一次
查
询
1w条数数据耗时6s分析
oracle
查
100
w条数据,给你
100
万条
数据的一张表,你将如何
查
询
优化?
1.两种
查
询
引擎
查
询
速度(myIsam 引擎 )InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行。MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作有些不同,InnoDB类型的表用count(*)或者count(主键),加上where c...
Oracle
查
询
100
万到200万之间的数据
取
100
-150条数据的方法1. 最佳选择:利用分析函数 row_number() over ( partition by col1 order by col2 ) 比如想取出
100
-150条
记录
,按照tname排序 select tname,tabtype from ( ...
找到数据窗口在
查
询
时,
每次
查
询
的
记录
条数不一致的情况的原因
环境:windows2003 r2 + pb7.0.3
100
09 +
oracle
10.2症状:一个收费
记录
的表,当
查
询
记录
超过4
万条
的时候,就出现
每次
查
询
的
记录
不一样。比例,我要
查
询
收费时间在2008/01/01 到2009/11/25的
记录
,
查
询
的时候,第
一次
可能
查
到2008/01/01到2009/04/10日的
记录
,第二次可能
查
到2008/01/01到2009/08/30日的
记录
。在其他的
Oracle
17,086
社区成员
55,238
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章