表中主键必须为标识列,[ID] int IDENTITY (1,1)
1.分页方案一:(利用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
2.分页方案二:(利用ID大于多少和SELECT TOP分页)
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
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
语句形式:
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实现分页查询的各种方法,并比较它们的性能差异。 ### SQL实现分页查询的方法 #### 方法一:使用`NOT IN`子句 在SQL Server 2000/2005版本中,一种常见的分页查询实现方式是通过`NOT IN`子句。...
3. **添加分页**:为了实现分页,我们需要使用`Skip()`和`Take()`方法。`Skip(n)`用于跳过前n条记录,`Take(m)`用于获取之后的m条记录。比如,如果你想获取第10页,每页显示10条记录,你可以这样做: ```csharp ...
### 三种数据库SQL分页方法详解 在数据库查询过程中,分页是非常常见且重要的一个功能。它可以帮助我们更高效地处理大量数据,特别是在构建大型应用系统时,分页技术能够显著提升用户体验。本文将详细介绍三种...
mybatis中,sqlserver分页
本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server(这里用SQL代替)、MySQL中的实现方式,并对它们的性能进行对比分析。 #### 分页方案一:利用Not In和SELECT TOP分页 **基本...
SQL提供了多种实现分页的方法,本文将详细介绍并比较三种常用的SQL分页技术:利用Not In和SELECT TOP分页、利用ID大于多少和SELECT TOP分页、以及利用SQL的游标存储过程分页。 #### 1. 利用Not In和SELECT TOP分页 ...
本文将详细探讨三种常用的Oracle分页SQL方法:ROWNUM、ROWNUM结合子查询以及新引入的Oracle 12c的FETCH NEXT WITH OFFSET语法。这三种方法各有优缺点,适用于不同的场景。 1. ROWNUM方法: ROWNUM是Oracle中最基础...
简易的sqlserver分页功能,只需要将页码传入即可...3、传入mybitis中 在sql语句头部调用 ${pading.begin} 结尾调用 ${pading.end}即可实现分页 4、默认每页10条 若需要更改 则修改该类源码中 的成员变量即可(有注释)
在SQL Server 2000中,由于没有内置的`OFFSET`和`FETCH`功能,我们可以使用`ROW_NUMBER()`函数配合`WHERE`子句来实现分页。首先,为每一行分配一个唯一的行号,然后根据这个行号进行筛选: ```sql WITH PagedData ...
本文将详细介绍三种在SQL中实现分页的技术,帮助读者更好地理解和掌握这一实用技巧。 ### 第一种方法:使用NOT IN与TOP结合 这种方法的基本思路是首先从表中选择出一定数量的记录(比如前20条),然后在剩余的记录...
在LINQ to SQL中,可以使用Skip和Take方法实现分页。Skip用于跳过指定数量的记录,Take用于获取指定数量的记录。 3. **Visual Studio 2008**: VS2008是微软的集成开发环境,它提供了对LINQ的支持,包括LINQ to SQL...
### 在SQL Server中通过SQL语句实现分页查询 #### 一、背景介绍 在数据库应用开发中,分页查询是一种常见的技术手段,用于改善用户体验并提高系统性能。特别是当数据量庞大时,一次性加载所有数据到前端不仅会导致...
通过配合`OVER`子句和`BETWEEN`操作符,可以轻松实现分页。这种方法高效且灵活,支持任意排序,成为SQL Server分页的首选方法。 在实际应用中,应根据数据量、查询复杂度和性能需求选择合适的分页策略。在优化分页...
使用SQL语句实现通用分页查询,支持模糊查询等。
以上介绍了三种数据库(SQL Server、Access、Oracle)中实现分页查询的方法。每种数据库都有其特点,选择合适的方法可以显著提升查询性能。在实际应用中,应根据具体需求和数据库特性灵活选择合适的分页策略。
本文将详细介绍三种主流数据库(SQL Server、MySQL和Oracle)中的分页SQL语句实现方法。 #### SQL Server 的分页SQL语句实现 SQL Server 支持通过`TOP`关键字来实现分页查询。具体实现方式如下: 1. **查询第M页...
在实际应用中,更常见的是使用`OFFSET`和`FETCH NEXT`(在SQL Server 2012及更高版本中)或者`LIMIT`和`OFFSET`(在MySQL等系统中)来实现分页,这些方法通常更有效率,尤其是当配合索引使用时。 为了优化性能,应...
在SQL Server中,实现分页查询有多种方法,包括使用`ROW_NUMBER()`函数、`OFFSET`关键字以及传统的子查询方式等。 ### 使用`ROW_NUMBER()`函数进行分页 `ROW_NUMBER()`函数是在SQL Server 2005中引入的一个窗口...