`
piperzero
  • 浏览: 3555002 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

最优化的ms sql server分页sql语句

 
阅读更多

作者:yanek
email:yanek@126.com


特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。
说明:

pagesize: 每页显示记录数
cureentpage:当前页数

select * from ( select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC


例子说明:

假如数据库表如下:

user_table:

id:主键,自增
username:字符
password:字符

假设有80条记录,每页显示10条记录,id 从1到80


现在按照id升序排列取出第三页的数据应该为:所取得记录的id 应该为 21到30。

这时该语句应该为:

select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC

原理如下:

先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)

然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1

然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。

最后在重新排序得到最终我们需要的数据。id在21-30之间。


希望对大家有所帮助。

如有问题,希望和大家一块交流。

分享到:
评论

相关推荐

    SqlServer数据库中的分页语句

    本篇将深入探讨SQL Server实现分页查询的语句及其工作原理。 首先,我们要明白SQL Server分页查询的基本思想:一次查询只返回所需页面的数据,而不是一次性获取所有数据,这样可以减少网络传输量,减轻服务器压力,...

    标准SQLServer分页存储过程

    1. `@strSql`: SQL语句字符串,用于指定要进行分页的数据源。 2. `@nPageSize`: 每页显示的记录数量。 3. `@nPageCount`: 当前请求的页数。 4. `@nRowCount`: 输出参数,返回满足条件的总记录数。 #### 参数详解 -...

    SQLServer分页.rar

    本资源"SQLServer分页.rar"包含了一个名为"SQL分页.txt"的文件,里面详细讲解了SQL Server中的分页实现方法。 首先,我们来理解SQL Server分页的基本概念。分页通常涉及到两个关键参数:`OFFSET`和`FETCH NEXT`。`...

    sqlserver 分页存储过程

    - 最后,根据当前页码和分页设置构造并执行SQL语句,查询并返回指定页的数据。SQL语句包含`SELECT TOP @TopN`、`@FieldShow`、`@tbname`、`@WhereString`和`@FieldOrder`等元素,确保返回正确的数据。 这个存储...

    mysql,oracle,sqlserver分页

    - 可以通过内层查询来优化上述SQL语句,以确保查询到的数据符合要求。 - **示例**: ```sql SELECT b.* FROM ( SELECT ROWNUM AS rowno, a.* FROM ( SELECT * FROM emp WHERE sal > 800 ORDER BY sal ) a...

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

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

    jsp+sqlserver分页代码

    5. **性能优化**:对于大量数据的查询,可以考虑使用索引或优化SQL语句来提高查询效率。 6. **用户体验**:增加分页导航栏,方便用户切换不同的页面。 #### 四、总结 本文详细介绍了JSP结合SQL Server实现分页的...

    SQL Server代码实例分页效果

    在代码后台,可以封装一个通用的分页查询方法,接受数据库连接、SQL语句、页码和每页大小作为参数,根据选择的分页策略生成并执行相应的SQL。例如,在C#中,你可以创建一个如下的方法: ```csharp public static ...

    SQL Server 存储过程及Oracle SQL语句分页

    而Oracle的分页SQL语句更为简洁,适合在不支持存储过程或者简单场景下使用。但需要注意的是,Oracle的`ROWNUM`方式在处理有序数据时可能会有性能问题,因为`WHERE ROWNUM`条件可能无法充分利用索引。 在实际应用中...

    SQLServer数据库分页查询

    ### SQL Server 数据库分页查询方法详解 #### 一、背景与问题定义 在实际的数据库操作中,分页查询是非常常见的需求之一。对于大型数据集来说,一次加载所有数据到前端显示是不现实的,这不仅会增加服务器负担,还...

    SQL Server2005分页查询

    在SQL Server 2005中,分页查询是一个常见的需求,特别是在处理大量数据时,为了提高用户体验,通常需要一次性加载一定数量的数据,而不是一次性显示所有数据。以下将详细讲解SQL Server 2005中分页查询的常用方法。...

    Hibernate+sqlserver2000分页

    首先,Hibernate是Java领域中最流行的ORM(对象关系映射)框架之一,它允许开发者使用面向对象的方式操作数据库,减少了直接编写SQL语句的工作量。而SQL Server 2000是一款由Microsoft开发的关系型数据库管理系统,...

    关于SQL 数据分页

    在实际应用中,更常见的是使用`OFFSET`和`FETCH NEXT`(在SQL Server 2012及更高版本中)或者`LIMIT`和`OFFSET`(在MySQL等系统中)来实现分页,这些方法通常更有效率,尤其是当配合索引使用时。 为了优化性能,应...

    数据库分页SQL语句实现

    本文将详细介绍三种主流数据库(SQL Server、MySQL和Oracle)中的分页SQL语句实现方法。 #### SQL Server 的分页SQL语句实现 SQL Server 支持通过`TOP`关键字来实现分页查询。具体实现方式如下: 1. **查询第M页...

    LINQ To SQL实现分页效果源码

    由于LINQ延迟执行,直到你真正遍历结果集时才会执行SQL语句。 ```csharp foreach (var customer in pagedQuery) { // 处理每个customer对象 } ``` 5. **优化性能**:在某些情况下,为了提高性能,你可能需要...

    jsp的分页,jsp+sqlserver源码

    在SQL Server数据库中,我们可以使用SQL查询语句来实现分页。常见的方法有使用`TOP`关键字结合`ORDER BY`获取指定数量的记录,或者使用`OFFSET`和`FETCH NEXT`来实现更灵活的分页。在这个源码中,可能会包含这样的...

    海量数据分页sql server经典

    该存储过程接收SQL查询语句、当前页码、每页记录数、排序依据等参数,并通过动态构建SQL语句来实现分页查询。 #### 总结 通过对上述几种分页方法的分析,我们可以看出,基于SQL查询的分页方法相较于传统的游标...

    SqlServer 分页存储过程

    存储过程是预编译的SQL语句集合,可以封装复杂的逻辑,包括分页查询。`pages.sql`可能就是一个包含分页逻辑的存储过程。例如: ```sql CREATE PROCEDURE GetPagedData @PageNumber INT, @PageSize INT, @...

    sqlserver海量数据TOP分页

    在SQL Server数据库中,处理海量数据的查询是一个常见的挑战,特别是在需要进行分页显示的时候。传统的分页方式可能会导致性能瓶颈,特别是在数据量极大的情况下。本文将深入探讨如何使用SQL Server中的`TOP`语句来...

Global site tag (gtag.js) - Google Analytics