oracle的分页处理,oracle中针对一个一千条记录的表如果要查200到300的记录怎么查

oracle的分页处理,oracle中针对一个一千条记录的表如果要查200到300的记录怎么查
最新回答
清风未央

2021-11-06 09:03:15

Oracle有3种分页处理语句
1、根据ROWID分页
2、按分析函数分页
3、按rownum分页
其中1的效率最高,2的效率最低,3的效率比2好很多,比1的差距也很小,是经常使用的分页处理语句;
3的语句有固定的格式,基本有以下步骤构成
a、查询原表,从原表中取出分页中需要的字段,并排序
select ename ,sal from emp order by sal
b、对a取到的内容进行rownum编号
select a1.*,rownum rn from (select ename ,sal from emp order by sal) a1
c、添加分页结束行号
select a1.*,rownum rn from (select ename ,sal from emp order by sal) a1 where rownum<=300
d、添加分页开始行号
select a2.*
from (select a1.*,rownum rn from (select ename ,sal from emp order by sal) a1 where rownum<=300) a2
where rn>=200
d中的语句可以用作rownum分页的模板使用,使用时修改select ename ,sal from emp order by sal,开始行号,结束行号就可以了。
毁灭自我

2023-05-16 23:50:45

首先要知道你的分区字段是什么,如果你括号中的语句没有分区字段的条件限制,那肯定会全表扫描的。如果你是以create_time为分区字段,就是按时间来分区的,那么你的where条件中应该增加create_time的时间条件,这样oracle就会在时间限定的分区中扫描了。
无聊的下雨天

2020-12-24 15:57:44

分页就要先排序
SELECT *
FROM (SELECT a.*, rownum rn
FROM (SELECT * FROM table_name ORDER BY col_name) a
WHERE rownum <= 300)
WHERE r >= 200
紫夜雪舞

2020-07-06 00:12:22

SELECT *
FROM (SELECT a.*, rownum rn
FROM (SELECT * FROM table_name ORDER BY col_name) a
WHERE rownum <= 300)
WHERE r >= 200