`
guoyiqi
  • 浏览: 1009750 次
社区版块
存档分类
最新评论

三种SQL分页法

SQL 
阅读更多

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

  语句形式:

SELECTTOP10*
FROMTestTable
WHERE(IDNOTIN
     (SELECTTOP20id
    FROMTestTable
    ORDERBYid))
ORDERBYID
SELECTTOP页大小*
FROMTestTable
WHERE(IDNOTIN
     (SELECTTOP页大小*页数id
    FROM表
    ORDERBYid))
ORDERBYID

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

  语句形式:

  SELECTTOP10*
FROMTestTable
WHERE(ID>
     (SELECTMAX(id)
    FROM(SELECTTOP20id
        FROMTestTable
        ORDERBYid)AST))
ORDERBYID
SELECTTOP页大小*
FROMTestTable
WHERE(ID>
     (SELECTMAX(id)
    FROM(SELECTTOP页大小*页数id
        FROM表
        ORDERBYid)AST))
ORDERBYID

  3.分页方案三:(利用SQL的游标存储过程分页)

create procedureSqlPager
@sqlstrnvarchar(4000),--查询字符串
@currentpageint,--第N页
@pagesizeint--每页行数
as
setnocounton
declare@P1int,--P1是游标的id
@rowcountint
execsp_cursoropen@P1output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcountoutput
selectceiling(1.0*@rowcount/@pagesize)as总页数--,@rowcountas总行数,@currentpageas当前页
set@currentpage=(@currentpage-1)*@pagesize+1
execsp_cursorfetch@P1,16,@currentpage,@pagesize
execsp_cursorclose@P1
setnocountoff

  其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。

  建议优化的时候,加上主键和索引,查询效率会提高。

  通过SQL 查询分析器,显示比较:我的结论是:

  分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句,第一页不可用 select top 0

  分页方案一:(利用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