oracle 分页查询

javajdbc 2008-10-22 03:42:51
分页查询格式:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21

请问如果我的查询结果集是超大数据量 百万数据 多表关联查询,
并且是多用户并发操作,
这样将会频繁的访问数据库
那这种分页实现方法还是否可行?
会不会急剧增加oracle server的压力?
如果真是如此,有什么解决方案吗?应该如何进行优化?

三四个用户同时查询时 web应用服务器 cup 80% ,多了就会当机~~~

请问 有什么解决方案吗?
...全文
240 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
killboner 2010-01-08
  • 打赏
  • 举报
回复
蛮高的,我前面还在想为什么不把最外面一层剥掉呢
lyvscf 2010-01-07
  • 打赏
  • 举报
回复
索引 百万上考虑分区 强制索引 避免全表扫描
bestdowt1314 2010-01-07
  • 打赏
  • 举报
回复
我多线程去同一表分页码的数据我有这方面的问题。100w级就感觉很吃力了
  • 打赏
  • 举报
回复
mark下
fuyou001 2009-09-28
  • 打赏
  • 举报
回复
mark下
inthirties 2009-09-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 javajdbc 的回复:]
分页查询格式:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21

请问如果我的查询结果集是超大数据量  百万数据  多表关联查询,
并且是多用户并发操作,
这样将会频繁的访问数据库
那这种分页实现方法还是否可行?
会不会急剧增加oracle server的压力?
如果真是如此,有什么解决方案吗?应该如何进行优化?

三四个用户同时查询时 web应用服务器 cup 80% ,多了就会当机~~~

请问 有什么解决方案吗?
[/Quote]

优化不仅仅是技术上的事情,有时需求上和设计上要有优化的概念,等一个执行很慢的sql,在最后才发现送到了dba面前的时候,由于已经奄奄一息的病人送到了外科医生面前,留下的是选择越来越少的治疗方案了。
ruixindongdong 2009-09-28
  • 打赏
  • 举报
回复
实际测了一下 200万条数据 取第1999900到2000000的数据
基本上速度在5。3秒左右
/*+FIRST_ROWS*/ 提示基本上不起作用``
ORACLE会自动帮你选择最优查询方式
而且基本上也是最优的

SQL上基本上优化不到多少了 如果并发量很大的话要考虑在硬件和程序上调优
比如缓存之内的东东
zhongweijian 2009-09-28
  • 打赏
  • 举报
回复
三层嵌套,楼主的方法应该还是比较有效的。
feifei19850830 2009-09-28
  • 打赏
  • 举报
回复
最好先analyze表,然后在用/*+FIRST_ROWS*/ ,可能效率会好点
雨青 2009-09-24
  • 打赏
  • 举报
回复
select /*+FIRST_ROWS*/ * from t
where rowid in
( select rid from
( select rownum rno,rid from
( select rowid rid from t
where category = 20
order by category,product_name
) where rownum <= 5000
) where rno >= 4981
)
wfqqwer5213 2008-10-22
  • 打赏
  • 举报
回复
SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM TABLE_NAME A
WHERE ROWNUM <=40)
WHERE RN > 21
javajdbc 2008-10-22
  • 打赏
  • 举报
回复
有where条件的,三四个条件。
oracledbalgtu 2008-10-22
  • 打赏
  • 举报
回复
强制增加查询条件,避免full table scan。



[Quote=引用楼主 javajdbc 的帖子:]
分页查询格式:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21

请问如果我的查询结果集是超大数据量 百万数据 多表关联查询,
并且是多用户并发操作,
这样将会频繁的访问数据库
那这种分页实现方法还是否可行?
会不会急剧增加oracle server的压力?
如果真是如此,有什么解决方案吗?应该如何进行优化?

三四个用户同时查…
[/Quote]

17,082

社区成员

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

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