> 데이터 베이스 > MySQL 튜토리얼 > Oracle分页技术详解

Oracle分页技术详解

WBOY
풀어 주다: 2016-06-07 17:12:39
원래의
1106명이 탐색했습니다.

Oracle分页技术详解,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条

分页查询语句:

Select * from (

Select A.*,rownum rn from (

select * from table table_name )A

where rownum =20;

最内层的查询Select * from table_name 表示不进行翻页的原始查询语句。Rownu=21 控制分页查询的每页范围。

分页的目的就是控制输出结果集大小,,将结果尽快的返回,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的where ronum

Select * from ( select A.* ,rownum ru from ( select * from table_name) A ) where ru between 21 and 40

对比这两种写法,绝大数的情况下,第一个查询的效率比第二个高得多。

这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件where rownum

而第二查询语句,由于查询条件between 21 and 40 是存在与查询的第三层,而Oracle无法将第三层的查询条件推进到最内层(即使推进到最内层也没有意义,因为最内层查询不知道rn代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中层的是所有满足条件的数据,而中间层返回给最外层也是所有的数据。数据的过虑在最外层完成,显然这个效率要比第一个查询低得多!

上面的分析的查询不仅仅是对单表的简单查询,还是最内层查询是复杂得多表联合查询后最内层查询包含排列的情况一样有效。

更多Oracle相关信息见Oracle 专题页面 ?tid=12

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿