`

SQL Server分页3种方案总结

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

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

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
select ceiling(1.0*@rowcount/@pagesize) 总页数--,@rowcount as 总行数,@currentpage as 当前页 
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off
 
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
 
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页)   效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页)    效率最差,但是最为通用
附带SQL SERVER2005新特性:
ROW_NUMBER()函数可以计算每一行数据在结果集中的行号(从1开始计数),其使用语法
如下:
ROW_NUMBER OVER(排序规则)
SELECT * FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) AS rownum,
FNumber,FName,FSalary,FAge FROM T_Employee
) AS a
WHERE a.rownum>=3 AND a.rownum<=5
分享到:
评论

相关推荐

    SQL server 分页查询

    ### SQL Server分页查询概述 分页查询是指从大量数据中按需取出一部分数据的过程,通常用于网页展示或大型数据报表中,以提高加载速度和减少服务器负担。在SQL Server中,实现分页查询有多种方法,包括使用`ROW_...

    最简单的SQL Server数据库存储过程分页

    在SQL Server中,通过存储过程实现分页是一种常见且高效的解决方案。其核心思想是利用游标(Cursor)或临时表来获取数据总量,并根据指定的页码和每页数量来计算出需要返回的具体记录范围。这种方法的优势在于它可以...

    SQL Server 分页方案比拼

    在IT领域,尤其是在数据库管理与查询优化方面,SQL Server分页技术是数据检索中的一个关键环节。分页技术主要用于在大型数据库中实现高效的数据展示,它允许用户在不加载整个结果集的情况下,按需获取数据的特定部分...

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

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

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

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

    jsp+sqlserver分页代码

    String strConn="jdbc:sqlserver://localhost:1433;DatabaseName=abc"; conn=DriverManager.getConnection(strConn,"sa","123"); ``` - **`Class.forName`**:加载SQL Server的JDBC驱动。 - **`String strConn`**:...

    SQL分页最佳解决方案

    分页方案一使用了`NOT IN`和`SELECT TOP`来实现。这种方式首先选取前20条记录(假设每页20条),然后在主查询中排除这些ID,选取接下来的10条记录。这种方案在数据量不大时可行,但随着数据增加,效率会降低,因为`...

    在SQL Server中通过SQL语句实现分页查询

    通过对上述三种分页方案的分析可以看出,在实际应用中应根据具体情况选择合适的分页策略。如果表中有递增的唯一标识符(如ID),那么推荐使用方案二,因为它在大多数情况下提供更好的性能。若没有这样的唯一标识符,...

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

    一种改进后的分页存储过程采用了SQL Server中的表变量技术,示例代码如下: ```sql CREATE procedure pagination1(@pagesize int, -- 页面大小,如每页存储20条记录 @pageindex int) -- 当前页码 as set nocount ...

    SQLServer数据库分页查询

    本文主要探讨在 SQL Server 2008 R2 版本中实现分页查询的五种不同方法,并对这些方法进行了性能测试。 #### 二、测试环境与条件 - **数据库**: SQL Server 2008 R2 - **表名**: ARTICLE - **字段**: ID (主键,...

    海量数据分页sql server经典

    本文将介绍几种在SQL Server中实现分页的有效方法,并着重讨论一种基于SQL查询优化的分页技术。 #### 传统分页方法及其局限性 - **ADO 记录集分页法**:这种方法利用ADO的内置功能实现分页。但是它存在明显的缺点...

    SQL Server 2000 通用分页过程

    这个通用分页存储过程提供了一种灵活且高效的分页解决方案。通过合理的参数配置和关键字选择,可以有效地优化查询性能。在实际应用中,还需要根据具体场景调整参数设置,以达到最佳效果。此外,随着数据库技术的发展...

    sqlserver 存储过程分页(支持千万级)算法研究

    本文将深入探讨SQL Server存储过程中的高级分页技术,特别是针对千万级别数据量的场景,通过分析提供的代码示例,提炼出核心知识点,帮助读者理解和掌握高效分页查询的实现方法。 ### 1. 使用临时表和ROWCOUNT实现...

    通用的SQL server分页存储过程

    标题提到的“通用的SQL server分页存储过程”提供了一种解决方案,可以避免重复编写存储过程,只需调整参数即可满足不同分页需求。 分页存储过程的核心思想是利用`OFFSET`和`FETCH NEXT`这两个SQL Server 2012及更...

    SQLServer海量数据库的查询优化及分页算法方案

    SQL Server 海量数据库的查询优化及分页算法方案 SQL Server 海量数据库的查询优化及分页算法方案是非常重要的,因为在公安信息化的高速发展中,数据库的规模越来越大,查询和分页的速度变得越来越慢。因此,如何...

    sqlserver 支持多表联合查询分页存储过程

    根据提供的信息,我们可以深入探讨如何在SQL Server中创建一个支持多表联合查询并实现分页功能的存储过程。本文将详细介绍存储过程的设计思路、参数解释、实现细节以及可能遇到的问题和解决方案。 ### 一、存储过程...

    sql server 分页存贮,联查,下级查询上级

    在SQL Server数据库管理系统中,处理大量数据时,分页存储、联查(JOIN)和下级查询上级(Hierarchical Query)是常见的操作。这些技术对于优化数据检索性能、构建复杂的数据关系以及展示层次结构信息至关重要。 一...

    SQL Server数据库三种分页方案详尽分析

    在SQL Server数据库中,分页查询是常见的操作,特别是在处理大量数据时,为了提供良好的用户体验,需要快速地加载页面内容。本文将详细分析三种分页方法,并探讨它们的优缺点。 首先,我们创建一个名为`TestTable`...

    LINQ To SQL实现分页效果源码

    总结来说,LINQ to SQL的分页功能结合了强大的查询表达能力和数据库操作的便利性,为.NET开发者提供了高效的数据访问解决方案。通过理解和实践这些步骤,你可以在你的应用程序中实现高效的分页功能。

    真正高效的SQLSERVER分页查询(多种方案)

    在SQL Server中,分页查询是常见的需求,尤其是在大数据量的场景下。然而,SQL Server在处理分页查询时效率并不高,这通常会导致性能问题。本文将探讨几种不同的分页查询方法,并通过实际测试来比较它们的效率,以找...

Global site tag (gtag.js) - Google Analytics