`
Janne
  • 浏览: 44642 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

分页

阅读更多

 Mysql的分页的sql语句:

     方法一:使用COUNT(*)的方式
            

  SELECT COUNT(*) FROM foo WHERE b = 1; 
  SELECT a FROM foo WHERE b = 1 LIMIT 100,10;

 

    方法二:使用SQL_CALC_FOUND_ROWS            

  SELECT SQL_CALC_FOUND_ROWS a FROM foo WHERE b = 1 LIMIT 100, 10; 
  SELECT FOUND_ROWS(); 

      第二种方式调用SQL_CALC_FOUND_ROWS之后会将WHERE语句查询的行数放在FOUND_ROWS()

       之中,第二次只需要查询FOUND_ROWS()就可以查出有多少行了。

 

讨论这两种方法的优缺点:
首先原子性讲,第二种肯定比第一种好。第二种能保证查询语句的原子性,第一种当两个请求之间有额外的操作修改了表的时候,结果就自然是不准确的了。而第二种则不会。但是非常可惜,一般页面需要进行分页显示的时候,往往并不要求分页的结果非常准确。即分页返回的total总数大1或者小1都是无所谓的。所以其实原子性不是我们分页关注的重点。

 

sqlserver的分页的sql语句:

     分页方案一:(利用Not In和SELECT TOP分页)         

 SELECT TOP 10 * FROM TestTable
           WHERE (
                         ID NOT IN (
                             SELECT TOP 20 id FROM TestTable ORDER BY id)

                        )ORDER BY ID

             sql语句句型:                

 SELECT TOP 页大小 *FROM TestTable 
      WHERE (
                        ID NOT IN
                      (SELECT TOP 页大小*页数 id  FROM 表 ORDER BY id)
                  )ORDER BY ID

 

 


        分页方案二:(利用ID大于多少和SELECT TOP分页)             

  SELECT TOP 10 *FROM TestTable
      WHERE (
                         ID >(SELECT MAX(id) FROM (
                                  SELECT TOP 20 id FROM TestTable ORDER BY id)
                               AS T)
                       )ORDER BY ID

             sql语句句型:

 SELECT TOP 页大小 * FROM TestTable 
      WHERE   (
                ID > (SELECT MAX(id)FROM (
                                 SELECT TOP 页大小*页数 id FROM 表 ORDER BY id
                         )   AS T)
         )ORDER BY ID

 
       分页方案三:(利用SQL的游标存储过程分页)
                  代码如下:
                    

 create procedure XiaoZhengGe
     @sqlstr nvarchar(4000), --查询字符串
    @currentpage int, --第N页
    @pagesize int --每页行数
        as
        set nocount on
declare @P1 int, --P1是游标的id
        @rowcount int
         exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output

 

 

          其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
          建议优化的时候,加上主键和索引,查询效率会提高。
          通过SQL 查询分析器,显示比较:结论是:
                分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
                分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
                分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
                在实际情况中,要具体分析

SqlServer分页的存储过程:

            方法一:               

declare 
     @PageNo int ,
     @pageSize int;
     set @PageNo搜索 = 2
     set @pageSize=20 
  select * from (
       select row_number() over(order by object_id) rn,* from sys.objects
         ) tb
        where rn >(@PageNo-1)*@pageSize and rn <=@PageNo*@pageSize

 

 

         方法二:
                还有一种方法就是将排序字段作为变量,通过动态SQL 实现,可以改成存储过程。     

declare 
   @PageNo int ,
   @pageSize int;
declare
   @TableName varchar(128),
   @OrderColumns varchar(500),
   @SQL varchar(max); 
   set @PageNo = 2,
   set @pageSize=20,
   set @TableName = 'sys.objects'set 
   @OrderColumns = 'name ASC,object_id DESC'
   set @SQL = 'select * from (
        select row_number() over(order by '+@OrderColumns+' ) rn,* from ' +@TableName+')tb where rn >'+convert(varchar(50),(@PageNo-1)*@pageSize) +' and  rn <= '+convert(varchar(50),@PageNo*@pageSize)print @SQL exec(@SQL)

 

 

 Oracle分页的SQL语句:

         方法一:
                   --1.先查询出全量
                   --2.使用rownum,它不支持大于号,支持小于号
                   --3.把全量作为一个结果集,让rownum小于当前页的结束号,

                          查询出一个结果集,把rownum作为一个结果
                   --4.把第三步的查询的结果集作为一个表
                   --5.在外面套一层select,把里层的rw作为查询条件,让它大于起始行号

                   

select * from (select rownum rw, a.*
     from (
            select * from eb_item
          ) a
          where rownum < 16) b
       where b.rw > 10;

 

 


 

 

 

 

 

  • 大小: 487.3 KB
分享到:
评论

相关推荐

    Java Ajax分页,jsp ajax分页

    在网页开发中,分页是一种常见的用户界面设计,用于处理大量数据时的高效展示。Java AJAX(Asynchronous JavaScript and XML)分页与JSP(JavaServer Pages)相结合,可以提供无需刷新整个页面即可动态加载更多内容...

    Nifi模板-PostGreSqlToMySql数据分页实时采集-带分页.zip

    使用大数据处理工具NIFI,进行数据从Postgresql中导入到MySql中,实现数据的同步处理,处理的时候,是带有分页的,因为作者正在做相关的项目,而,用nifi同步数据好说,如何,进行数据的分页同步不好弄,这里,主要是,采用...

    分页插件.zip

    在网页开发中,分页是不可或缺的一个功能,特别是在数据量庞大的时候,为了提高用户体验,将大量数据分成多个页面展示,而不是一次性加载所有内容。本文将详细介绍一个基于jQuery的分页插件,它具有代码简洁、兼容性...

    分页:高度自定义分页

    2.1.目前网络上很多分页主键,不能进行按钮选择, 2.2.甚至对样式修改的难度也较大, 2.3.使用在开发过程中由于使用到了分页功能,在这里写了一个分页功能。 3.按钮选择 之前的很多按钮是通过参数进行选择,这样不...

    用recyclerview实现分页滑动,横向纵向分页

    本教程将深入讲解如何利用RecyclerView实现横向和纵向的分页滑动,充分利用Android原生功能。 首先,理解RecyclerView的基本结构。RecyclerView包含一个Adapter,它负责将数据集绑定到视图上,以及一个...

    QTableWidget,QTableView分页的分页栏

    为了解决这个问题,我们可以实现分页功能,让数据分批次加载,从而提高界面响应速度。本文将深入探讨如何在`QTableWidget`和`QTableView`中实现分页栏。 首先,我们需要理解`QTableWidget`和`QTableView`的区别。`...

    C#源码Datagridview分页事例

    本示例将详细介绍如何在C#中实现Datagridview的分页功能,这对于处理大量数据时提高用户界面的响应性和效率至关重要。 首先,理解Datagridview分页的基本概念。分页允许用户以较小的数据集浏览数据,而不是一次性...

    分页+递归显示分页+递归显示

    在IT领域,分页和递归是两种常见的数据处理技术,尤其在大数据量的Web应用中,它们扮演着至关重要的角色。"分页+递归显示分页+递归显示"这一主题涉及到如何有效地管理和展示大量层级数据。下面将详细阐述这两个概念...

    mysql数据库实现分页

    在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而提高了用户体验并降低了服务器负载。以下是对分页实现的详细说明: 一、基础概念 分页是将...

    java_swing表格分页

    Java Swing 表格分页实现 Java Swing 是一个用于构建图形用户界面的 Java 库,提供了丰富的用户界面组件和功能。在本文中,我们将探讨如何使用 Java Swing 实现表格分页。 表格分页的需求 在实际开发中,我们经常...

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...

    WinForm自定义分页控件

    在Windows Forms(WinForm)开发中,我们常常需要实现数据的分页显示,以提高用户界面的可操作性和性能。自定义分页控件能够帮助我们更好地管理大量数据,提供流畅的用户体验。本文将深入探讨如何在WinForm应用中...

    C# winform分页控件,用于dataGridView分页浏览,分页,跳转,自定义页数,动态设置页大小

    C# winform分页控件,用于dataGridView分页浏览 `PageControl`是一个为Windows Forms应用程序提供的自定义用户控件,用于实现数据分页显示功能。该控件允许用户通过简单的界面导航不同的数据页,包括首页、上一页、...

    bootstrap-table客户端分页实例

    这个"bootstrap-table客户端分页实例"是展示如何在不依赖服务器端处理的情况下,利用前端数据实现表格的分页功能,这对于小型项目或者数据量不大的场景非常实用。 Bootstrap Table的核心特性包括: 1. **数据源**...

    asp.net24种分页含源码

    在这个“asp.net24种分页含源码”的资源包中,我们重点关注的是ASP.NET中的分页技术,这是一种在处理大量数据时不可或缺的功能,可以提高网页加载速度,提升用户体验。 分页是Web应用中常见的数据展示策略,特别是...

    WPF 分页DataGrid 分页控件的实现

    在Windows Presentation Foundation (WPF) 中,开发人员经常需要处理大量的数据展示,此时分页功能就显得尤为重要。WPF DataGrid 控件是一个强大的表格展示工具,它可以方便地展示和操作数据,而添加分页功能则可以...

    使用jquery实现表格动态分页

    在网页开发中,数据展示是不可或缺的一部分,而大型数据集的处理往往需要用到分页功能,以便用户能够更高效地浏览和查找信息。本教程将详细讲解如何使用jQuery库来实现表格的动态分页,同时结合Java后端进行数据的...

    10种 js web分页效果

    在Web页面中,当数据量过大时,为了提高用户体验和加载速度,通常会采用分页技术来展示内容。本教程将深入探讨10种不同的JS Web分页效果,这些效果设计精良,适用于现代网站的需求。 1. **基础分页**:这是最简单的...

    JS+HTML分页代码

    在网页开发中,分页是一种常见的用户界面设计,它用于将大量数据分割成多个小部分,使得用户可以方便地浏览和导航。本示例提供的"JS+HTML分页代码"是一个利用JavaScript(JS)和超文本标记语言(HTML)实现的分页...

    pagination - 前端分页插件

    在前端开发中,当网页数据量过大时,为了提高用户体验和加载速度,通常会采用分页显示数据。本文将深入探讨“pagination”这一前端分页插件,它可以帮助开发者轻松实现具有CSS样式的分页功能。 分页插件是前端开发...

Global site tag (gtag.js) - Google Analytics