Oracle实现分页三种不同的方式

 更新时间:2023年08月02日 11:08:24   作者:logqq  
这篇文章主要给大家介绍了关于Oracle实现分页三种不同的方式,oracle分页与MySQL不同,MySQL是用关键字limit进行分页,oracle是根据行号,需要的朋友可以参考下

前言

Oracle的三层分页指的是在进行分页查询时,使用三种不同的方式来实现分页效果,分别是使用ROWNUM、使用OFFSET和FETCH、使用ROW_NUMBER() OVER()

1.使用ROWNUM

ROWNUM是Oracle中一个伪列,它用于表示返回的行的序号。使用ROWNUM进行分页查询的方法是在SELECT语句中加入WHERE子句,并在WHERE子句中指定ROWNUM的取值范围,例如:

SELECT *
FROM (
  SELECT a.*, ROWNUM r
  FROM my_table a
  WHERE ROWNUM <= 30
)
WHERE r >= 20;

上述查询语句的意思是查询my_table表中的前30条记录,然后在这30条记录中取出第20到第30条记录作为结果返回。使用ROWNUM进行分页查询的优点是简单易懂,缺点是在查询大量数据时性能较差。

2.使用OFFSET和FETCH

OFFSET和FETCH是Oracle 12c引入的语法,它们可以更方便地实现分页查询。使用OFFSET和FETCH进行分页查询的方法是在SELECT语句中加入OFFSET和FETCH子句,例如:

SELECT *
FROM my_table
ORDER BY my_column
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

上述查询语句的意思是对my_table表按照my_column列进行排序,然后取出从第21条记录开始的10条记录作为结果返回。使用OFFSET和FETCH进行分页查询的优点是简单方便,缺点是只有在Oracle 12c及以上版本中才能使用。

3.使用ROW_NUMBER() OVER()

ROW_NUMBER() OVER()是Oracle中一种用于计算行号的函数。使用ROW_NUMBER() OVER()进行分页查询的方法是在SELECT语句中加入ROW_NUMBER() OVER()函数,并在WHERE子句中指定ROW_NUMBER() OVER()的取值范围,例如:

SELECT *
FROM (
  SELECT a.*, ROW_NUMBER() OVER (ORDER BY my_column) r
  FROM my_table a
)
WHERE r BETWEEN 21 AND 30;

上述查询语句的意思是对my_table表按照my_column列进行排序,然后取出第21到第30条记录作为结果返回。使用ROW_NUMBER() OVER()进行分页查询的优点是灵活性高,可以实现各种不同的分页方式,缺点是语法较为复杂。

总结

到此这篇关于Oracle实现分页三种不同的方式的文章就介绍到这了,更多相关Oracle分页方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ORACLE随机数DBMS_RANDOM包

    ORACLE随机数DBMS_RANDOM包

    这篇文章主要介绍了ORACLE随机数DBMS_RANDOM包,通过dbms_random包调用随机数的方法大致有4种,具体哪4种请看本篇文章吧
    2015-09-09
  • Oracle 11g 客户端的安装和配置的图文教程

    Oracle 11g 客户端的安装和配置的图文教程

    这篇文章主要介绍了 Oracle 11g 客户端的安装和配置的图文教程,需要的朋友可以参考下
    2017-05-05
  • Oracle配置dblink访问PostgreSQL的操作方法

    Oracle配置dblink访问PostgreSQL的操作方法

    本文给大家介绍下Oracle配置dblink访问PostgreSQL的操作方法,通过dblink访问PostgreSQL的详细过程,对Oracle dblink访问PostgreSQL相关知识感兴趣的朋友一起看看吧
    2022-03-03
  • 数据库表分割技术浅析(水平分割/垂直分割/库表散列)

    数据库表分割技术浅析(水平分割/垂直分割/库表散列)

    数据库表分割技术包含以下内容:水平分割/垂直分割/库表散列.接下来将对以上分割进行详细介绍,感兴趣的朋友可以了解下,对你日后维护数据库是很有帮助的
    2013-01-01
  • Oracle 分区索引介绍和实例演示

    Oracle 分区索引介绍和实例演示

    这篇文章主要介绍了Oracle 分区索引介绍和实例演示,分区索引(或索引分区)主要是针对分区表而言的,本文主要描述了分区索引的相关特性并给出演示示例,需要的朋友可以参考下
    2014-09-09
  • 浅析Oracle中sys、system和Scott用户下的数据库连接问题

    浅析Oracle中sys、system和Scott用户下的数据库连接问题

    这篇文章主要介绍了关于Oracle中sys、system和Scott用户下的数据库连接问题,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 在Oracle实例关闭时如何修改spfile的参数详解

    在Oracle实例关闭时如何修改spfile的参数详解

    这篇文章主要给大家介绍了关于在Oracle实例关闭时如何修改spfile参数的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-07-07
  • Oracle临时表空间管理和优化操作

    Oracle临时表空间管理和优化操作

    Oracle临时表空间(Temporary Tablespace)主要用来存储数据库运行中产生的临时对象,例如SQL排序结果集,临时表等,这些对象的生存周期只有会话,本文总结了Oralce中涉及临时表空间的管理和优化操作,需要的朋友可以参考下
    2024-07-07
  • Oracle中PL/SQL中if语句的写法介绍

    Oracle中PL/SQL中if语句的写法介绍

    以下是对Oracle中PL/SQL中if语句的写法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • ORA-00349|激活 ADG 备库时遇到的问题及处理方法

    ORA-00349|激活 ADG 备库时遇到的问题及处理方法

    这篇文章主要介绍了ORA-00349|激活 ADG 备库时遇到的问题及处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论