oracle 中 一次查询大量的数据 10w或者百w级的,速度慢怎么解决?

捣鼓地瓜 2008-10-27 09:17:38
数据库中有近6 7百万数据,一次需要查询出几十万行数据的几个字段,每次查询都在100s左右,请问有什么好的优化措施可以提高效率?
无where条件全表查询 。

sql: select id,type,code from t

...全文
3482 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yulihua49 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 xu_long 的帖子:]
数据库中有近6 7百万数据,一次需要查询出几十万行数据的几个字段,每次查询都在100s左右,请问有什么好的优化措施可以提高效率?
无where条件全表查询 。

sql: select id,type,code from t
[/Quote]
你这个效率已然算是不错的了,如果需要优化,就提升硬件吧。
在数据库进行适当的表分区,让SQL并行从各分区提取数据。每个分区放在独立磁盘、独立通道的存储体。
yulihua49 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 xu_long 的帖子:]
数据库中有近6 7百万数据,一次需要查询出几十万行数据的几个字段,每次查询都在100s左右,请问有什么好的优化措施可以提高效率?
无where条件全表查询 。

sql: select id,type,code from t
[/Quote]
你这个效率已然算是不错的了,如果需要优化,就提升硬件吧。
在数据库进行适当的表分区,让SQL并行从各分区提取数据。每个分区放在独立磁盘、独立通道的存储体。
xugh 2009-02-02
  • 打赏
  • 举报
回复
要做什么操作呢?
magicbluestone 2009-01-24
  • 打赏
  • 举报
回复
这个主要看你的复合索引的是怎么建的,如果复合索引的第一字段条件的,是一个type这种的类型的话,这种粒度比较大的条件做的复合索引,在觉的这个种索引在查询的效率不高,还是分开独立建索引比较好的,复合索引里面对的查询条件的顺序有要求,这样在查询时只有按这个定式去查询,别的不走索引,效果会差
y22ang_cn 2008-12-24
  • 打赏
  • 举报
回复
可以分页显示,用FIRST_ROWS出来一部门解决一部分。
wyyl1 2008-12-23
  • 打赏
  • 举报
回复 1
伪造数据,想要多快就有多快!
xiaoyou1982 2008-10-29
  • 打赏
  • 举报
回复
实在没办法建分区了,不过我看你就这么点数据,好象也不需要建分区
codearts 2008-10-28
  • 打赏
  • 举报
回复

只能升级硬件了,或者修改一些sga,pga什么的,从sql角度上来看是没有办法再优化了
捣鼓地瓜 2008-10-28
  • 打赏
  • 举报
回复
一次取出全部数据的话 分页查询加循环快 还是 一次性取出快??

各位大侠
小弟跪谢了。。。。
捣鼓地瓜 2008-10-28
  • 打赏
  • 举报
回复
这个表有20个字段 查询的这三个字段已经建立了联合索引,
现在是在工具 比如sqlplus里面看plan的话 是index fast scan cost 576 rows 649k
但是项目用到的是ejb的映射, 在项目中取出数据的时间比较长 大约100s

现在的问题是 如何将项目中取得这些数据的时间缩短。。。

hl_ghost 2008-10-28
  • 打赏
  • 举报
回复
mark
leiru 2008-10-28
  • 打赏
  • 举报
回复
已经建立索引了,而且还没有where条件。
确实没什么方法优化了好像。。
看看其他高手的了
jdsnhan 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 xu_long 的帖子:]
数据库中有近6 7百万数据,一次需要查询出几十万行数据的几个字段,每次查询都在100s左右,请问有什么好的优化措施可以提高效率?
无where条件全表查询 。

sql: select id,type,code from t
[/Quote]

6 7 百万,查询出几十万,还无where条件。。。。这个逻辑。。。
wffffc 2008-10-27
  • 打赏
  • 举报
回复
这样的查询除了做数据导出,没有where条件,查出来也没有什么意义啊,不知道你们怎么用查出的数据?
wffffc 2008-10-27
  • 打赏
  • 举报
回复
如果表中字段很多的话,可以在id,type,code 上面建索引,这样查询的时候就不用全表扫描了,只要扫描这个组合索引就可以了。
要是字段就这几个的话,那就只能做应用软件的时候分页了,是用FIRST_ROWS提示试试,不然只能升级硬件了。
捣鼓地瓜 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 BlueskyWide 的回复:]
在id,type,code字段上建立索引。

引用楼主 xu_long 的帖子:
数据库中有近6 7百万数据,一次需要查询出几十万行数据的几个字段,每次查询都在100s左右,请问有什么好的优化措施可以提高效率?
无where条件全表查询 。

sql: select id,type,code from t
[/Quote]

where 子句没有条件索引起作用么?
还有就是 这个sql的话 建立联合索引还是单独建立索引啊?
捣鼓地瓜 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hebo2005 的回复:]
分页查询
硬件升级
[/Quote]

就是要一次性的把数据都读出来
然后进行操作啊
捣鼓地瓜 2008-10-27
  • 打赏
  • 举报
回复
这些字段上已经有索引了啊
hebo2005 2008-10-27
  • 打赏
  • 举报
回复
分页查询
硬件升级
BlueskyWide 2008-10-27
  • 打赏
  • 举报
回复
在id,type,code字段上建立索引。

[Quote=引用楼主 xu_long 的帖子:]
数据库中有近6 7百万数据,一次需要查询出几十万行数据的几个字段,每次查询都在100s左右,请问有什么好的优化措施可以提高效率?
无where条件全表查询 。

sql: select id,type,code from t
[/Quote]

17,131

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧