分页查询格式:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21请问如果我的查询结果集是超大数据量 百万数据 多表关联查询,
并且是多用户并发操作,
这样将会频繁的访问数据库
那这种分页实现方法还是否可行?
会不会急剧增加oracle server的压力?
如果真是如此,有什么解决方案吗?应该如何进行优化?三四个用户同时查询时 web应用服务器 cup 80% ,多了就会当机~~~请问 有什么解决方案吗?
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21请问如果我的查询结果集是超大数据量 百万数据 多表关联查询,
并且是多用户并发操作,
这样将会频繁的访问数据库
那这种分页实现方法还是否可行?
会不会急剧增加oracle server的压力?
如果真是如此,有什么解决方案吗?应该如何进行优化?三四个用户同时查询时 web应用服务器 cup 80% ,多了就会当机~~~请问 有什么解决方案吗?
FROM (SELECT A.*, ROWNUM RN
FROM TABLE_NAME A
WHERE ROWNUM <=40)
WHERE RN > 21
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
)
基本上速度在5。3秒左右
/*+FIRST_ROWS*/ 提示基本上不起作用``
ORACLE会自动帮你选择最优查询方式
而且基本上也是最优的
SQL上基本上优化不到多少了 如果并发量很大的话要考虑在硬件和程序上调优
比如缓存之内的东东
优化不仅仅是技术上的事情,有时需求上和设计上要有优化的概念,等一个执行很慢的sql,在最后才发现送到了dba面前的时候,由于已经奄奄一息的病人送到了外科医生面前,留下的是选择越来越少的治疗方案了。