Oracle的分页机制主要不外乎两种方法,
1.使用rownum序列, 这种方法的好处是, 在查找前几页时速度比较快, 缺点时, 查询出来的数据不是完全准确的, 在查询的数据量很大时, 特别是查询最后几页时速度非常慢.
select col1,col2,..,coln
from (
select rownum rn,col1,col2,....,coln from
table_name where ... and rownum <= n)
where rn >= m;
2. 使用Oracle8i开始支持的分析函数 这种方法取出来的数据准确性相当高, 查询效率比较稳定.
建议使用这种方法.
select col1,col2,..,coln from (
select row_number() over(order by colx desc /asc ) rn,
col1,col2,....,coln from
table_name
where ...)
where rn between m and n ;
1.使用rownum序列, 这种方法的好处是, 在查找前几页时速度比较快, 缺点时, 查询出来的数据不是完全准确的, 在查询的数据量很大时, 特别是查询最后几页时速度非常慢.
select col1,col2,..,coln
from (
select rownum rn,col1,col2,....,coln from
table_name where ... and rownum <= n)
where rn >= m;
2. 使用Oracle8i开始支持的分析函数 这种方法取出来的数据准确性相当高, 查询效率比较稳定.
建议使用这种方法.
select col1,col2,..,coln from (
select row_number() over(order by colx desc /asc ) rn,
col1,col2,....,coln from
table_name
where ...)
where rn between m and n ;