`

Oracle 数据库分页 四种写法及分析

 
阅读更多

总结:

在测试结果来看,采用第一种写法能比较获得较好执行的效率。

以下是测试的结果:

 

DROP TABLE TT PURGE;

CREATE TABLE TT AS SELECT * FROM DBA_OBJECTS;--创建表
DELETE TT WHERE OBJECT_ID IS NULL;
SELECT COUNT(*) FROM TT;--51784

INSERT INTO TT SELECT * FROM TT;
INSERT INTO TT SELECT * FROM TT;
INSERT INTO TT SELECT * FROM TT;
INSERT INTO TT SELECT * FROM TT;
INSERT INTO TT SELECT * FROM TT;
COMMIT;--共插入828544


CREATE INDEX IDX_TT_OBJECT_ID ON TT(OBJECT_ID);--创建索引

execute dbms_stats.gather_table_stats(ownname => 'ADMIN',tabname => 'TT');--收集统计信息
-----------------------------------------------------------------------------------------------------

以下是分页的几种方法
--1.
--执行时间: 00: 00: 05.02
/*

22857  consistent gets
10891  physical reads

*/

SELECT *
  FROM (SELECT A.*, ROWNUM RN
          FROM (SELECT * FROM TT ORDER BY OBJECT_ID) A
         WHERE ROWNUM <= 200000)
 WHERE RN >= 100000;

 --2.
--执行时间:   00: 00: 17.90
/*

22857  consistent gets
 34961  physical reads

*/
 

SELECT *
  FROM (SELECT A.*, ROWNUM RN
          FROM (SELECT * FROM TT ORDER BY OBJECT_ID) A
        )
 WHERE RN BETWEEN 100000 AND 200000;

  --3.
--执行时间:   00: 00: 06.04
/*22857  consistent gets
12081  physical reads*/
 

SELECT *
   FROM (SELECT TT.*, ROW_NUMBER() OVER(ORDER BY OBJECT_ID) ROWINDEX FROM TT) A
  WHERE ROWINDEX BETWEEN 100000 AND 200000;

 --4.
--执行时间: 00: 00: 06.08
/* 122858  consistent gets
  11962  physical reads*/
 -- /*+ ORDERED USE_NL(P S) */

SELECT *
  FROM TT
 WHERE ROWID IN
       (SELECT RID
          FROM (SELECT ROWNUM RN, RID
                  FROM (SELECT ROWID RID FROM TT ORDER BY OBJECT_ID)--ORDER BY SAL DESC
                 WHERE ROWNUM <= 200000)
         WHERE RN >= 100000);

  

另外一个对分页在10g,11g下执行效率的分析帖子:

 

http://www.itpub.net/thread-1603830-1-2.html

分享到:
评论

相关推荐

    Oracle的SQL分页实践

    在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...

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

    Oracle数据库在处理大数据量查询时,分页查询是一种常见的优化策略,目的是限制返回结果集的大小,加快查询速度,提供更好的用户体验。本文将详细探讨Oracle的分页查询语句及其存储过程。 首先,Oracle的分页查询...

    Oracle的分页查询语句.docx

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

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

    Oracle数据库在处理大数据量时,分页查询是一个非常重要的功能,它可以帮助用户高效地获取数据集的一部分,而不是一次性加载所有结果。本篇文章将详细介绍Oracle中的分页查询,并提供一种常用的分页查询语句格式和一...

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

    在数据库管理系统(DBMS)中,特别是在Oracle这样的大型关系型数据库中,分页查询是一种非常实用的技术。它允许用户根据需求获取特定数量的记录,这对于处理大量数据尤其重要。例如,在网页应用中,分页技术可以帮助...

    分页代码Oracle

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

    oracle 分页的部分

    Oracle数据库在处理大数据量时,分页查询是一个重要的性能优化策略,它可以帮助用户按需获取数据,而不是一次性加载整个结果集,从而降低网络传输负担和内存消耗。本篇将深入探讨Oracle分页查询的实现机制、效率差异...

    oracle的伪列与分页

    在Oracle数据库中,伪列(Pseudocolumn)并非真正意义上的列,而是一种特殊的数据库对象,它看起来像表中的一个列,但实际上并不存储数据。Oracle提供了一些内置的伪列供用户使用,如`ROWID`和`ROWNUM`等,这些伪列...

    oracle分页操作

    Oracle数据库中的分页查询是大数据量检索时必不可少的技巧,它可以帮助用户有效地管理查询结果,只返回所需的页面数据,从而减少网络传输和内存消耗。在Oracle中,分页查询通常利用`ROWNUM`伪列来实现。`ROWNUM`是一...

    oracle分页查询

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

    Oracle分页查询

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

    JAVA JAP分页写法大全

    这个压缩包文件名"JAVA JAP分页写法大全"暗示了它可能包含各种不同的分页实现示例,这对于初学者来说是一个极好的学习资源。下面我们将详细探讨Java中常见的分页方法。 首先,我们要理解分页的基本概念。在处理大量...

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

    在Oracle数据库中,分页查询是获取大量数据集的一部分,以提高性能并提供更好的用户体验,尤其是在Web应用中。本文将详细介绍Oracle实现分页查询的几种SQL语法。 1. **无ORDER BY排序的写法** 这种方法适用于无需...

    ORACLE分页查询SQL语法

    Oracle数据库在处理大数据量时,分页查询是必不可少的操作,它可以有效地减少网络传输的数据量,提高用户界面的响应速度。本文将详细介绍Oracle中分页查询的SQL语法,并对比不同方法的效率。 1. **无ORDER BY排序的...

    oracle sql 帮助文档

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

    Sql语法转换为Oracle语法

    标题“Sql语法转换为Oracle语法”涉及到的主要知识点是SQL Server与Oracle数据库之间的SQL语句转换。这通常是因为在系统迁移或跨平台开发时,需要将SQL Server的查询语句适应Oracle数据库的语法。 描述中提到的...

    ORACLE SQL性能调优分析.pdf

    因此,对于SQL的调优,DBA们通常会尝试不同的SQL写法,目的是让Oracle数据库生成一个更优的操作计划,以获得更高的查询效率。 接下来,Oracle优化器分为基于规则的优化器(RBO)和基于代价的优化器(CBO)。RBO主要...

    DB2、ORACLE SQL写法的主要区别

    DB2、ORACLE SQL写法的主要区别 1、数据类型转换函数 2、Where条件弱类型判断 3、replace关键字 4、子查询别名 5、DATE数据类型的区别 6、分页的处理 7、decode函数 8、NVL函数 9、substr的不同 10、获取操作系统...

    Oracle分页查询的实例详解

    Oracle数据库在处理大数据量时,分页查询是一种常见的优化手段,它可以帮助用户高效地获取数据库中的部分数据,而不是一次性加载所有记录。以下是对Oracle分页查询的实例详解: 1. **Oracle分页查询基础** Oracle...

    ORACLE日常操作手册

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,它的日常操作包括了数据库的启动与关闭、用户管理、数据类型的使用以及SQL语句的编写等关键环节。以下是对这些知识点的详细说明: 一、数据库的启动和...

Global site tag (gtag.js) - Google Analytics