`
老竹枝
  • 浏览: 79868 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle数据分页

阅读更多
在制作报表的是时候,我们往往需要将数据库中取得的数据分页显示。但是Oracle本身似乎没有提供一个很方便高效的方法给我们完成这个日常应用。所以只有靠自己了。
在Oracle中分页可以用到的一般有两个,row_number()函数和rownum伪列。
先看看row_number()函数,我们可以这样实现分页:
SELECT * FROM (SELECT t.*,row_number() OVER(ORDER BY t.order_col) AS rn FROM t_table t) WHERE rn BETWEEN start_row AND end_row

这个分页简单明了,但是效率比较低,因为row_number()函数似乎效率不高。
        又:在大数据量的时候,这种方法似乎效率又很高,因为外面用到了rn进行分页,oracle似乎对row_number()进行过优化,会仅仅对需要的那部分数据排序,而不用完成整个排序过程,使用这个方法得到了rownum第二种方法一样的效果。
再看看用rownum伪列进行分页:
SELECT * FROM (SELECT t.*,rownum AS rn FROM (SELECT * FROM t_table ORDER BY order_col) t) WHERE rn BETWEEN start_row AND end_row

这样做效率略高。需要注意的是rownum伪列实在先跟一行数据产生,然后再执行排序的,也就是说如果仅仅
SELECT t.*,rownum FROM t_table t ORDER BY t.order_col
这样获取rownum,得到的rownum是乱序的,所以必须在ORDER BY语句外面再套上一层再获取rownum。当然,如果结果不需要ORDER BY或者ORDER BY的那一列是INDEX,则rownum是顺序的。

因为分页的时候往往先显示第一页,所以我们还可以在提高一点效率:
SELECT * FROM (SELECT t.*,rownum AS rn FROM (SELECT * FROM t_table ORDER BY order_col) t WHERE rownum<end_row) WHERE rn>=start_row

这样因为在现实前面的数据时,可以少加载数据,所以可以提高前面的数据显示效率,让查询页面尽快显示。但是如果翻页到最后一页,则效率会变成和上面一种方法完全一样。
在分页的时候,记录的总数是必须获取的一个数据,在获取记录数的时候切记不要对记录进行排序,因为在这个时候排序是完全没有必要但是却会严重影响性能的一个操作。

不知道还有什么其他更好、更有效率的数据分页方法没有,希望知道的可以指点一下!
分享到:
评论

相关推荐

    Oracle数据分页讨论即实现方式

    此文档,充分讲解了orcale分页原理,即不同方式的优缺点,特别适合初学者。总结的相当透彻!

    kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器

    【标题】"kettle oracle循环分页迁移数据的完整例子,生成txt后FTP上传到远程服务器"揭示了几个关键的IT知识点,主要包括: 1. **Kettle(Pentaho Data Integration,PDI)**:Kettle是一款开源的数据集成工具,...

    分页显示Oracle数据库记录的PHP类

    在本文中,我们将深入探讨如何使用PHP与Oracle数据库进行交互,特别是实现分页显示数据的功能。首先,我们有一个名为`ora_sql`的PHP类,该类封装了与Oracle数据库的基本操作,包括连接、执行SQL语句以及获取查询结果...

    java web与Oracle数据的分页功能

    在Java Web开发中,与Oracle数据库进行交互时,分页功能是常见的需求,尤其是在处理大量数据时,为了提高用户体验和加载速度,分批次地显示数据是必不可少的。本项目提供的源代码正是针对这一需求,提供了在Java Web...

    SSH+ORACLE好用分页

    在这个场景下,"SSH+ORACLE好用分页"意味着我们将SSH框架与Oracle数据库结合,实现了高效的数据分页功能。 数据分页是Web应用中常见的需求,特别是在处理大量数据时,分页可以提高用户体验,避免一次性加载过多数据...

    Oracle 10g数据库海量数据分页查询优化.pdf

    Oracle 10g 数据库海量数据分页查询优化 本文主要介绍 Oracle 10g 数据库中的一种优化的海量数据分页查询解决方案。该方案通过分析传统分页查询技术的不足,融合了多种技术,包括数据库优化策略、SQL 语句优化、...

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

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

    Oracle的SQL分页实践

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

    Oracle分页(limit方式的运用)

    Oracle分页(limit方式的运用)Oracle分页(limit方式的运用)

    oracle分页查询并返回总记录数据存储过程

    oracle分页查询并返回总记录数据的存储过程

    oracle 分页完整代码

    在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们需要将结果集分块加载,这就是所谓的分页。在这个Java和Oracle结合的分页实现中,我们将探讨如何通过Java后端配合...

    Oracle自定义数据分页存储过程

    本文将详细介绍如何在Oracle中创建一个自定义的数据分页存储过程,并给出C#代码的使用示例。 首先,我们创建一个名为`pkg_Pager`的存储过程包,它通常包括两个过程:一个用于计算总记录数,另一个用于获取指定范围...

    ssh+oracle分页

    总结来说,“ssh+oracle分页”涉及了SSH框架整合、数据库操作、前端展示等多个环节,需要综合运用各种技术和工具,确保数据分页的高效性和用户体验。理解并掌握这些知识点,对提升Java Web开发者的能力大有裨益。

    Oracle&JSP分页和Oracle分页

    总结来说,Oracle和JSP结合实现分页涉及以下几个步骤:在Oracle中构造分页查询,使用JDBC在Servlet中执行查询,然后在JSP页面中展示数据。理解并熟练掌握这些步骤对于开发高效、用户友好的数据驱动网站至关重要。在...

    oracle的分页查询

    Oracle 的分页查询 在 Oracle 中,分页查询是非常常见的需求,但是在使用查询条件时又不能使用大于号(&gt;)。本文将讲解 Oracle 中的分页查询,包括使用 ROWNUM 伪列和 ORDER BY 子句对查询结果进行排序和分页。 一...

    oracle sql分页语句

    Oracle SQL分页语句是数据库查询中的一个重要概念,它允许我们从海量数据中按需获取特定范围的结果,比如第一页、第二页等。在Oracle数据库系统中,实现分页查询通常使用ROWNUM伪列或者结合RANK()、DENSE_RANK()、...

    Oracle 分页实例 带分页控件用法

    Oracle数据库在处理大数据量时,分页查询是必不可少的功能,它可以有效地提高网页或应用程序的加载速度,减少不必要的数据传输,提升用户体验。在这个Oracle分页实例中,我们将探讨如何结合分页控件实现数据的分页...

    基于mybatis-generate 的Oracle数据库的分页生成插件

    mybatis 分页 mybatis-generate Oracle数据库 大家知道mybatis自动生成代码是没有分页功能的 我在网上找了很久 有很多内容 但正真可以使用的少之又少 本人整合了网上的资源 整理了基于Oracle数据库的mybatis插件 ...

    java实现oracle分页策略

    在Java开发中,数据库操作是不可或缺的一部分,尤其是在处理大量数据时,分页查询显得尤为重要。Oracle作为一款广泛应用的关系型数据库,其高效的分页策略对于优化用户体验和减轻服务器压力具有显著效果。本文将深入...

    Oracle真分页。源码

    Oracle数据库在处理大数据量时,分页查询是一个重要的性能优化手段。传统的ROWNUM分页方式在某些场景下可能无法满足需求,特别是在数据量过大或需要跨多行进行排序时,会出现效率低下甚至错误的结果。因此,“Oracle...

Global site tag (gtag.js) - Google Analytics