`

三种SQL分页法

    博客分类:
  • java
SQL 
阅读更多

三种SQL分页法
表中主键必须为标识列,[ID] int IDENTITY (1,1)

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

语句形式: 
SELECT TOP 页记录数量 *
FROM 表名
WHERE (ID NOT IN
  (SELECT TOP (每页行数*(页数-1)) ID
   FROM 表名
   ORDER BY ID))
   ORDER BY ID
//自己还可以加上一些查询条件


例:
select top 2 *
from Sys_Material_Type
where (MT_ID not in
    (select top (2*(3-1)) MT_ID from Sys_Material_Type  order by MT_ID))
order by MT_ID

 

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

语句形式:
SELECT TOP 每页记录数量 *
FROM 表名
WHERE (ID >
          (SELECT MAX(id)
    FROM (SELECT TOP 每页行数*页数 id   FROM 表
           ORDER BY id) AS T)
       )
ORDER BY ID

例:
SELECT TOP 2 *
FROM Sys_Material_Type
WHERE (MT_ID >
          (SELECT MAX(MT_ID)
           FROM (SELECT TOP (2*(3-1)) MT_ID
                 FROM Sys_Material_Type
                 ORDER BY MT_ID) AS T))
ORDER BY MT_ID

 

3.分页方案三:(利用SQL的游标存储过程分页)
create  procedure SqlPager
@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
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off

 

4.总结:
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。

通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用

分享到:
评论

相关推荐

    三种SQL分页法效率分析

    本文将详细分析三种SQL分页方法的效率,并提供每种方法的示例。 首先,我们来看第一种分页方案:**Not In 和 SELECT TOP 分页**。这种方法通过先获取前n条记录,然后在主查询中排除这些记录来获取下一页的数据。...

    T-SQL经典分页语句

    综上所述,T-SQL提供了多种方式来实现分页查询,包括单表分页、单表有条件分页以及多表分页,每种方法都有其适用场景和优缺点。开发者应根据实际需求和数据量大小选择最合适的分页策略,以达到最佳的性能和用户体验...

    海量数据分页sql server经典

    传统的ADO记录集分页法因其内存占用高、效率低下而不适合大规模数据的分页查询。本文将介绍几种在SQL Server中实现分页的有效方法,并着重讨论一种基于SQL查询优化的分页技术。 #### 传统分页方法及其局限性 - **...

    SQL分页语句

    ### SQL分页语句 #### 知识点一:SQL分页的概念与应用场景 - **概念**:在数据库查询操作中,分页是指将查询结果按照一定的规则分割成多个页面,每一页显示部分数据记录的过程。 - **应用场景**:常用于网站、应用...

    SQL Server 的通用分页显示存储过程

    从简单的ADO记录集分页法到复杂的存储过程实现,每种方法都有其适用场景。对于处理小数据量的场景,使用表变量的方法已经足够高效;而对于需要处理大量数据的情况,则推荐使用基于SQL查询的分页方法,以实现更高的...

    Sql server 分页存储过程的性能对比

    在SQL Server数据库管理中,分页查询是一种常见的需求,特别是在数据量庞大的情况下,为了提高用户体验,需要快速加载部分数据而不是一次性加载所有数据。本篇资料主要探讨的是在SQL Server中,利用存储过程实现分页...

    jsp+sqlserver分页代码

    ### JSP + SQL Server 分页代码详解 #### 一、背景介绍 在Web开发中,分页是一项常用的技术,尤其当数据量较大时,通过分页可以提高用户体验并减轻服务器负担。本文将对一个JSP结合SQL Server实现的简单分页代码...

    肤浅的SQL分页代码,急需完善

    "肤浅的SQL分页代码,急需完善"这个标题暗示了当前的分页实现可能存在问题或者效率不高,需要进行优化。下面,我们将深入探讨SQL分页的基本原理,以及如何编写高效、稳健的分页代码。 首先,让我们回顾一下基本的...

    经过优化测试的SQL分页存储过程.docx

    ### 经过优化测试的SQL分页存储过程 在数据库管理与应用开发中,分页是一种常见的需求,尤其是在处理大量数据时。本文将基于提供的文档摘要深入探讨分页技术的相关知识点,包括传统分页方法的问题、优化后的分页...

    ASP高效分页----最快的分页法,逐页翻页速度极快

    ASP(Active Server Pages)是一种微软开发的服务器端脚本环境,用于创建动态交互式网页。在处理大量数据时,分页技术是必不可少的,它能够有效地管理数据展示,提高用户体验,防止页面加载过慢。本篇文章将深入探讨...

    Sql Server 各种数据分页

    在SQL Server中,数据分页是一种重要的查询策略,特别是在处理大量数据时,它能有效地提高查询性能并优化用户体验。分页允许用户逐步加载和查看数据,而不是一次性加载所有记录,这对大型数据库尤其必要。以下是对...

    仿google分页完整代码

    在网页开发中,分页是一种常见的数据展示方式,特别是在数据量较大的情况下,为了提高用户体验,避免一次性加载所有数据导致页面加载速度慢或者浏览器卡顿。本案例提供的“仿Google分页完整代码”就是一个PHP实现的...

    Oracle中实现MySql中limit+SqlServer分页+分页的存储过程

    本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...

    sql2000存储过程和分页学习

    在SQL Server 2000中,存储过程和分页查询是两个重要的数据库管理与查询技术。存储过程是预编译的SQL语句集合,它允许开发者封装一系列复杂的操作为一个可重用的对象,提高数据库的性能和安全性。而分页查询则是用于...

    asp 数字分页 仿百度分页 仿谷歌分页

    在ASP(Active Server Pages)开发中,数字分页是一种常见的技术,用于处理大量数据时,将数据分成多个页面,让用户可以逐步浏览,提高用户体验。"asp 数字分页 仿百度分页 仿谷歌分页"这个项目的目标是实现一个与...

    jsp+sqlserver2012实现三个班级成绩查询系统

    在本项目中,"jsp+sqlserver2012实现三个班级成绩查询系统"是一个基于Web的数据库管理系统,主要用于查询不同班级的成绩。该系统利用了Java Server Pages (JSP) 技术作为前端展示,与Microsoft SQL Server 2012...

    ORACLE分页查询SQL语法

    本文将详细介绍Oracle中分页查询的SQL语法,并对比不同方法的效率。 1. **无ORDER BY排序的写法**: 这种方式的效率最高,因为它避免了额外的排序操作。示例代码如下: ```sql SELECT * FROM ( Select ROWNUM ...

Global site tag (gtag.js) - Google Analytics