`

Oracle、MySql、SQLServer 数据分页查询

 
阅读更多

  最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习.....

       (一)、 mysql的分页查询

        mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式:

 
/*

* sql:可以是单表的查询语句,也可以是多表的联合查询语句

* firstIndex:其实的索引

* pageSize:每页显示的记录数

*/

select o.* from (sql) o limit firstIndex,pageSize
 

如下面的截图,每页显示的记录数为20:

                                                  查询(1-20)这20条记录

                                             查询(21-40)这20条记录

        mysql的分页查询就这么简单......

  (二)、sqlserver2005的分页查询

    在sqlserver2005之前一直借助top关键字来实现分页查询,不过效率低,在sqlserver2005及其之后的版本都使用row_number()解析函数来完成分页查询,效率有了很大的提高,不过sql语句比较复杂,下面给出分页查询的通式:

 
/*
* firstIndex:起始索引


* pageSize:每页显示的数量

* orderColumn:排序的字段名

* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

*/

select top pageSize o.* from (select row_number() over(order by orderColumn) as rownumber,* from(sql) as o where rownumber>firstIndex;
 

 下面看截图,每页显示20条记录数:

                                                             查询(1-20)这20条记录

                                                         查询(21-40)这20条记录

    知道了sqlserver中的row_number函数,分页也就简单了.....

  (三)、oracle分页查询

    接下来重点说说oracle的分页查询,oracle的分页查询方法相对来说要多点,ROWNUM、row_number(),今天主要将两种效率稍好的分页查询语句。

    ①ROWNUM查询分页通式:

 
/*

* firstIndex:起始索引

* pageSize:每页显示的数量

* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

*/
select * from(select a.*,ROWNUM rn from(sql) a where ROWNUM<=(firstIndex+pageSize)) where rn>firstIndex
 

以下截图是以这种方式进行的查询语句:

                                                          查询(1-21)这20条记录*****(没有ID=6的记录,所以查询到的最大ID为21)

                                                       查询(22-41)这20条记录*****(没有ID=6的记录,所以开始查询到的ID为22,以及最大ID为41)

 

    ②row_number()解析函数分页查询通式:

 
 /*

 * firstIndex:起始索引

 * pageSize:每页显示的数量

 * orderColumn:排序的字段名

 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

 */
select * from(select * from(select t.*,row_number() over(order by orderColumn) as rownumber from(sql) t) p where p.rownumber>firstIndex) where rownum<=pageSize
 

 以下截图是使用row_number()方式的分页查询效果:

                                                          查询(1-21)这20条记录*****(没有ID=6的记录,所以查询到的最大ID为21)

                                                    查询(22-41)这20条记录*****(没有ID=6的记录,所以开始查询到的ID为22,以及最大ID为41)

      对于oracle的分页查询,特地选出这两种实现方式是因为这两者各有千秋

     首先, 我们知道在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<firstIndex+pageSize",根据oracle的原则,第二层查询语句会嵌入到最内层中进行查询,也就是说,最开始执行的查询语句类似于:select * from wyuse where rownum<(firstIndex+pageSize) order by id asc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,比如:select * from wyuse where rownum<(5000) order by id asc,这样一开始会选出5000条记录,效率自然会慢很多....

     不过,相对于ROWNUM,row_number()方式可能通过简化可以少一层嵌套,不过貌似对于大数量的查询,效率也高不到哪里去.....不过,对于大数量如果为表建立索引再结合row_number()效果会很好(未测试)

分享到:
评论

相关推荐

    sql 分页 oracle mysql sqlserver

    sql 分页 针对oracle mysql sqlserver 等数据库的通用类

    oracle mysql SQL server分页

    ### Oracle、MySQL与SQL Server 分页查询详解 在数据库应用中,分页是常见的数据处理方式之一,尤其在展示大量数据时,通过分页技术可以有效地提高系统的响应速度和用户体验。本文将详细介绍Oracle、MySQL以及SQL ...

    oracle mysql sqlserver分页

    以上就是Oracle、MySQL和SQL Server三种数据库中分页查询的基本实现方法。通过这些方法,我们可以有效地处理大量数据的分页显示问题,提高应用程序的性能和用户体验。每种数据库的实现细节有所不同,因此在实际开发...

    sqlserver,mysql,oracle三种数据库的分页查询

    本文将深入探讨SQL Server、MySQL和Oracle这三种主流数据库系统中的分页查询实现方式。 首先,我们来看SQL Server。SQL Server提供了一种称为"TOP"的关键字来实现分页。例如,如果我们想获取第1页(假设每页有10条...

    关于SQL Server SQL语句查询分页数据的解决方案

    关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...

    mysql,oracle,sqlserver分页

    ### 数据库分页技术详解:MySQL、Oracle与SQL Server #### Oracle 分页 在Oracle数据库中实现分页功能,主要依赖于`ROWNUM`伪列。`ROWNUM`用于为查询结果集中的每一行分配一个唯一的编号,从1开始递增。通过控制`...

    用于oracle,mysql,sqlserver,数据库分页联合查询

    本话题主要聚焦于如何在Oracle、MySQL和SQL Server这三种主流关系型数据库中实现分页联合查询。 首先,我们来看Oracle数据库的分页查询。Oracle使用ROWNUM关键字来实现分页。例如,如果我们想获取第10到20条记录,...

    oracle mysql sql server 等数据库的分页要点解析

    3. **SQL Server分页** SQL Server使用`TOP`和子查询实现分页,如下: ```sql int pageSize = 10; int filter = pageSize * (currentPage - 1); SELECT TOP pageSize * FROM Users WHERE id NOT IN (SELECT TOP ...

    Oracle,SQl,MySql实现分页查询

    本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server(这里用SQL代替)、MySQL中的实现方式,并对它们的性能进行对比分析。 #### 分页方案一:利用Not In和SELECT TOP分页 **基本...

    Oracle Sql语句转换成Mysql Sql语句

    2. **分页查询**:Oracle使用ROWNUM进行分页,而MySQL通常使用LIMIT和OFFSET。在转换过程中,需要将Oracle的ROWNUM替换为MySQL的LIMIT子句。 3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在...

    mysql分页,oracle分页,sql server三种数据库实现分页

    mysql,oracle,sql server分页总结与比较

    Oracle,mysql,sqlserver等各种数据库的分页方法

    ### SQL Server分页方法 SQL Server中的分页实现方式相对复杂,主要通过子查询结合`TOP`关键字来完成。 #### 2. 使用`TOP`与子查询 这种方法利用了`TOP`关键字来限制结果集的数量,并通过子查询来排除前几条记录...

    sql分页(sqlserver,mysql,oracle )

    总结而言,虽然SQL Server、MySQL和Oracle在实现分页的具体语法上有所不同,但核心思想都是先定位到起始行,然后根据每页显示的记录数来选取相应数据。理解这些不同数据库的分页机制,对于高效地管理大量数据至关...

    数据库分页大全,oracle,sqlserver,mysql

    ### 数据库分页技术详解:Oracle、SQL Server、MySQL #### 一、引言 在进行数据查询时,为了提高用户体验以及系统性能,通常需要对数据进行分页处理。不同的数据库管理系统(Database Management System,DBMS)...

    mysql、sqlserver、oracle分页,java分页统一接口实现

    MySQL、SQL Server、Oracle 分页及 Java 分页统一接口实现 MySQL、SQL Server、Oracle 分页是关系数据库管理系统中最基本也是最常用的操作之一,而 Java 分页统一接口实现则是对数据库操作的抽象和封装。本文将对 ...

    ORACLE、MYSQL、SQLSERVER数据分页查询

    看过此博文后Oracle、MySql、SQLServer 数据分页查询,在根据公司的RegionRes表格做出了  SQLserver的分页查询语句: SELECT DISTINCT TOP 500 rr.ID AS id ,rr.strName AS name ,rr.nType AS res_type ,...

    数据库分页查询整理(oracle、mysql、SqlServer、access、db2等)

    不同的数据库管理系统(DBMS)有不同的分页查询语句,下面对 Oracle、DB2、SQL Server、MySQL、Access 等数据库的分页查询语句进行了整理。 SQL Server 分页查询 SQL Server 中有两种分页查询方法: 1. 第一种...

    Sqlserver、Oracle、MySql、PostgreSql、SqlLite数据库差异

    - **Sqlserver**、**Oracle**、**MySql**、**PostgreSql** 和 **SqlLite** 都提供了丰富的内置函数支持,包括数学、日期时间、字符串处理等多方面功能。 #### 五、分页 分页是数据库中常见的需求之一,不同的...

    mysql oracle和sqlserver分页查询实例解析

    本文将分别介绍MySQL、Oracle和SQL Server三种主流数据库系统的分页查询实现。 首先,MySQL的分页查询非常直观,只需要使用`LIMIT`关键字。基本语法是`SELECT * FROM (query) o LIMIT firstIndex, pageSize`。这里...

    mybatis分页插件,支持kingbase、tdengine、达梦、mysql、oracle、sqlserver等数据库

    这款插件不仅兼容多种数据库系统,如Kingbase、TDengine、达梦、MySQL、Oracle和SQLServer,还极大地简化了在实际开发中处理大量数据时的分页操作。下面我们将详细探讨MyBatis分页插件的核心功能、原理以及与各...

Global site tag (gtag.js) - Google Analytics