`
hrcdg
  • 浏览: 7904 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

(转)SqlServer2005高效分页sql查询语句汇总

 
阅读更多

sqlserver2005不支持关键字limit ,所以它的分页sql查询语句将不能用mysql的方式进行,幸好sqlserver2005提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。

下面是本人在网上查阅到的几种查询脚本的写法:

几种sqlserver2005高效分页sql查询语句
top方案:
   sql code

select top 10 * from table1
   where id not in(select top 开始的位置 id from table1)

max:
    sql code

select top 10 * from table1
    where id>(select max(id)
    from (select top 开始位置 id from table1order by id)tt)

row:
    sql code

select *
from (
    select row_number()over(order by tempcolumn)temprownumber,*
    from (select top 开始位置+10 tempcolumn=0,* from table1)t
)tt
where temprownumber>开始位置
3种分页方式,分别是max方案,top方案,row方案

效率:
第1:row
第2:max
第3:top

缺点:
max:必须用户编写复杂sql,不支持非唯一列排序
top:必须用户编写复杂sql,不支持复合主键
row:不支持sqlserver2000

测试数据:
共320万条数据,每页显示10条数据,分别测试了2万页、15万页和32万页。

页码,top方案,max方案,row方案
2万,60ms,46ms,33ms
15万,453ms,343ms,310ms
32万,953ms,720ms,686ms


是一种通过程序拼接sql语句的分页方案,
用户提过的sql语句不需要编写复杂的sql逻辑

诺用户提供sql如下
sql code
select * from table1

 

从第5条开始,查询5条,处理后sql变为
sql code
select *
from (
    select row_number()over(order by tempcolumn)temprownumber,*
    from (select top 10 tempcolumn=0,* from table1)t
)tt
where temprownumber>5

 

这是什么意思呢?分解一下

首先将用户输入的sql语句转稍稍修改
在select后添加top 开始位置+条数变成
再外加一列tempcolum,变成这样
sql code
select top 20 tempcolumn=0,* from clazz


嵌套一层,这样便可查询出行号
   刚才那个列就是用来这里order by用的
(也不知道sqlserver的row_number函数为什么必须要order by)
sql code
select row_number()over(order by tempcolumn)temprownumber,*
from (修改过的查询)t


再套一层,过滤掉行号小于开始位置的行
sql code
select * from (第二层)tt
where temprownumber>10

分享到:
评论

相关推荐

    sqlserver分页查询语句

    sqlserver分页查询语句;sqlserver分页查询语句;sqlserver分页查询语句;

    sql server 2008通用分页

    SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。

    SQL Server2005分页查询

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

    sqlserver+group by分组查询分页存储过程

    3. **执行分页查询**:使用动态生成的SQL语句执行查询,并通过设置`ROWCOUNT`来限制返回的结果集大小。 ### 综合运用`GROUP BY`、存储过程和分页技术 在给定的存储过程中,`GROUP BY`子句与分页查询的结合使用提供...

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

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

    java 连接sqlserver数据库查询,并分页显示

    本篇文章将详细讲解如何使用Java连接SQL Server数据库,执行查询语句以及实现分页显示。 首先,我们需要在Java项目中引入JDBC驱动,这是连接SQL Server数据库的基础。SQL Server的JDBC驱动通常为`mssql-jdbc`,可以...

    java语言的分页查询功能(mysql和sql server)

    通过`Statement`或`PreparedStatement`对象执行SQL语句,并使用`ResultSet`对象获取结果。 2. 分页查询SQL构造:对于MySQL,分页查询SQL可能如下: ```sql SELECT * FROM table LIMIT offset, limit; ``` 对于...

    SqlServer数据库中的分页语句

    首先,我们要明白SQL Server分页查询的基本思想:一次查询只返回所需页面的数据,而不是一次性获取所有数据,这样可以减少网络传输量,减轻服务器压力,并提升查询速度。在SQL Server中,通常使用`TOP`关键字结合子...

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

    ### 在SQL Server中通过SQL语句实现分页查询 #### 一、背景介绍 在数据库应用开发中,分页查询是一种常见的技术手段,用于改善用户体验并提高系统性能。特别是当数据量庞大时,一次性加载所有数据到前端不仅会导致...

    通用的存储过程sql分页查询语句

    存储过程是一组预先编译好的SQL语句,存储在数据库服务器中,可以按需调用执行。它的优点包括提高性能、减少网络流量、增强安全性以及简化复杂的操作。在分页查询场景下,创建一个存储过程可以有效地封装分页逻辑,...

    SQL Server2005通用分页存储过程.rar

    在SQL Server 2005中,分页查询是一个常用且重要的功能,它允许数据库管理员和开发者以指定的大小返回数据集的一部分,从而提高应用程序的性能和用户体验。本压缩包"SQL Server 2005通用分页存储过程.rar"包含了一个...

    sqlserver 实现分页的前台代码 以及后台的sqlserver语句

    在Java中,我们需要获取前端传来的页码和每页大小,然后构造上述SQL语句并执行: ```java @PostMapping("getData") public Map, Object> getData(@RequestParam int page, @RequestParam int pageSize) { String ...

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》示例代码

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》是一本深入解析SQL Server 2005中T-SQL查询语言的专业书籍。T-SQL(Transact-SQL)是微软对标准SQL的扩展,是SQL Server的核心组件,用于数据库管理、数据查询和...

    SQLServer数据库分页查询

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

    SQL Server代码实例分页效果

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

    struts+hibernate+sql server2005分页的小项目

    - **构建分页查询**:根据pageNumber和pageSize,使用LIMIT或OFFSET/FETCH子句(SQL Server 2005支持OFFSET/FETCH语法)构造分页查询语句。 - **执行查询并获取结果**:使用Hibernate执行分页查询,获取当前页的数据...

    sql分页 sqlserver中存储过程分页

    通过上述分析可以看出,这个存储过程通过动态生成 SQL 语句的方式实现了较为灵活且高效的分页查询。这种实现方式不仅适用于 SQL Server,也可以为其他关系型数据库设计分页查询提供一定的参考价值。对于实际项目开发...

    SQL Server 2000 通用分页过程

    ### SQL Server 2000 通用分页...此外,随着数据库技术的发展,现代版本的 SQL Server 已经提供了更为简便的分页查询方法,如使用 `OFFSET` 和 `FETCH NEXT` 语句等,这些方法可以进一步简化分页逻辑,提高查询性能。

    sqlserver分页sql

    - 最后,通过`sysobjects`、`syscolumns`和`systypes`等系统表查询排序字段的数据类型及精度等信息,为后续的SQL语句生成做准备。 ### 实现细节 - **排序字段处理**:通过`CHARINDEX()`函数查找`DESC`或`ASC`...

    SQL2005 高效分页sql语句

    在SQL Server 2005中,高效地处理大量数据并进行分页显示是一个重要的性能优化技巧。分页查询能够帮助用户在浏览大型数据集时,只加载一部分数据,提高用户体验,同时减轻服务器的负担。以下将详细讲解SQL Server ...

Global site tag (gtag.js) - Google Analytics