`

Oracle分页查询语句的写法

 
阅读更多

  Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。

  Oracle分分页查询格式:

以下是代码片段:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21 


  其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

  上面给出的这个Oracle分分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

  选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。查询语句如下:

以下是代码片段:
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN BETWEEN 21 AND 40 


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

  这是由于CBO 优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。

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

  上面分析的查询不仅仅是针对单表的简单查询,对于最内层查询是复杂的多表联合查询或最内层查询包含排序的情况一样有效。
分享到:
评论

相关推荐

    Oracle的分页查询语句.docx

    "Oracle分页查询语句详解" Oracle 的分页查询语句是数据库查询中的一种优化手段,用于控制查询结果集的大小,以提高查询效率。在 Oracle 中,分页查询语句可以使用 ROWNUM 和子查询来实现。本文将详细介绍 Oracle ...

    Oracle的分页查询语句 Oracle分页的存储过程

    本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询语句通常遵循一个标准格式,如下所示: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    Oracle分页查询(很不错的介绍)

    首先,理解Oracle分页查询的基本结构。通常,Oracle的分页查询采用嵌套查询的方式实现。以下是一个典型的分页查询模板: ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A ...

    oracle认证详解Oracle的几种分页查询语句

    ### Oracle认证详解:Oracle的几种分页查询语句 #### 分页查询背景及重要性 在数据库管理系统(DBMS)中,特别是在Oracle这样的大型关系型数据库中,分页查询是一种非常实用的技术。它允许用户根据需求获取特定...

    oracle分页查询

    ### Oracle分页查询详解 #### 一、Oracle分页查询基础 在Oracle数据库中,分页查询是一项常用的技术,主要用于处理大数据量时的查询需求,能够有效地减少每次查询返回的数据量,提高系统的响应速度和用户体验。 ##...

    Oracle分页查询

    ### Oracle分页查询详解 #### 一、Oracle分页查询基础 在Oracle数据库中,实现分页查询是一项常见的需求,特别是在处理大量数据时。本文将详细介绍Oracle中的分页查询技术,帮助初学者快速掌握这一技能。 #### 二...

    oracle分页操作

    1. 最内层查询:`SELECT * FROM TABLE_NAME`,这是原始的不进行分页的查询语句。 2. 中间层查询:`SELECT A.*, ROWNUM RN FROM (原始查询) A WHERE ROWNUM ,这里`ROWNUM 用于控制返回的最大行数,即每页的上限。 3....

    分页代码Oracle

    在Oracle数据库中,分页查询是一项非常常见的操作,特别是在数据量庞大的情况下,为了提高用户体验,避免一次性加载过多数据导致页面响应变慢,我们通常会采用分页的方式展示数据。本篇将详细介绍Oracle数据库中的...

    Oracle实现分页查询的SQL语法汇总

    总结来说,Oracle中实现分页查询有多种方法,无ORDER BY的写法在效率上更优,但无法保证数据的排序。有ORDER BY的写法则可确保排序,但性能较差。在实际应用中,应根据具体需求选择合适的方法,并考虑优化策略,如...

    Sql语法转换为Oracle语法

    这通常是因为在系统迁移或跨平台开发时,需要将SQL Server的查询语句适应Oracle数据库的语法。 描述中提到的"SqlConvertToOracle.pas"是一个关键文件,它可能是一个用Delphi编写的源代码文件,包含了实现SQL语句...

    oracle的伪列与分页

    3. **分页查询的另一种写法**: ```sql SELECT USRID, GRPID, UNAME, SAL, BRITH FROM ( SELECT A.*, ROWNUM AS RN FROM (SELECT * FROM T_USER ORDER BY USRID) A WHERE ROWNUM ) WHERE RN ; ``` 上述...

    oracle面试题

    #### 二、Oracle分页语句的写法 在Oracle中实现分页主要通过`RowNum`来完成。具体步骤如下: 1. **确定起始行号**:计算出要跳过的行数。 2. **使用`RowNum`**:给所有行加上行号。 3. **过滤行号**:根据需要显示...

    oracle sql 帮助文档

    Oracle SQL是甲骨文公司开发的一种关系数据库管理系统(RDBMS)中使用的...通过上述知识点的学习,可以更深入地理解Oracle SQL的基本语法和特性,进而编写有效且高效的SQL查询语句来操作和管理Oracle数据库中的数据。

    SSH分页技术详解与实例

    7. **实际项目中的适应性**:在实际项目中,可能需要根据数据库类型和具体需求调整分页SQL的写法,例如Oracle支持ROWNUM,而MySQL则可以使用LIMIT和OFFSET。 **优化技巧**: 1. **缓存**:对于不经常变动的数据,...

    ORACLE高效SQL书写规范

    在多表联接查询中,使用表别名可以使SQL语句更加清晰易读,同时也能减少ORACLE对SQL语句的解析时间。通过在字段名称前加上表别名,可以清楚地表明该字段所属的表。 **示例** 错误做法: ``` SELECT ename, dname ...

    oracle中rownum的用法

    通过上述介绍可以看出,`ROWNUM`在Oracle数据库中是一个非常实用的功能,它可以方便地用于获取特定行的数据、跳过某些行的数据或进行简单的分页查询。正确理解并熟练掌握`ROWNUM`的用法,将有助于提高数据库操作效率...

    Oracle到mysql转换的问题总结.doc

    2. **SQL语句写法的区别**: - Oracle字符串用单引号,MySQL可以用单引号或双引号。 - MySQL的子查询后需加别名,如`FROM (SELECT...) AS alias`。 - DELETE语句在MySQL中不能直接对表加别名,需用`DELETE T FROM...

    Oracle与MySQL的几点区别

    这样的写法在MySQL中是有效的,但在Oracle中则可能会导致错误。因此,在Oracle中使用别名时需要特别注意这一点。 #### 四、分页查询的实现方式 在实际应用中,分页查询是非常常见的需求。MySQL和Oracle在这方面的...

Global site tag (gtag.js) - Google Analytics