表中主键必须为标识列,[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分页)
语句形式:
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
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的游标存储过程分页) 效率最差,但是最为通用
分享到:
相关推荐
本主题将深入探讨`IDataReader`分页以及SQL中的三种分页方式:基于ROW_NUMBER()的分页、基于LIMIT/OFFSET的分页(在MySQL中常见)和基于游标的分页。 首先,我们来看`IDataReader`分页。`IDataReader`是.NET ...
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
关于SQL Server SQL语句查询分页数据的解决方案 在日常工作中,我们经常需要处理大量数据,并从中获取特定页面的数据。特别是在Web应用开发中,为了提高用户体验,通常会将数据进行分页显示。针对这一需求,本文将...
本文将详细探讨三种常用的Oracle分页SQL方法:ROWNUM、ROWNUM结合子查询以及新引入的Oracle 12c的FETCH NEXT WITH OFFSET语法。这三种方法各有优缺点,适用于不同的场景。 1. ROWNUM方法: ROWNUM是Oracle中最基础...
以上介绍了四种不同的SQL分页查询方法。每种方法都有其特点,在实际应用中应根据具体情况选择最适合的方案。对于小到中等规模的数据集,方法四可能是最简便的选择;而对于大规模数据集,则应考虑使用方法二或方法三...
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
这是我整理的,两种不同方式的分页方法,之前我做过测试的,如果数据量很大的话,然后对数据速度要求比较快的话,还是用sql存储过程分页比较好
mybatis中,sqlserver分页
### 三种数据库SQL分页方法详解 在数据库查询过程中,分页是非常常见且重要的一个功能。它可以帮助我们更高效地处理大量数据,特别是在构建大型应用系统时,分页技术能够显著提升用户体验。本文将详细介绍三种...
### 用SQL实现分页的三种方法 在数据库管理中,分页是一项常见的需求,尤其在处理大量数据时,能够有效地提升用户体验并减轻服务器负担。本文将详细介绍如何使用SQL实现分页功能,并针对三种不同的分页策略进行深入...
在VS2008中,LINQ to SQL提供了直观的方式来映射数据库模式到.NET类,从而简化了数据访问。 分页是数据库查询中常见的需求,特别是在处理大量数据时,为了提高用户体验,我们需要一次加载少量数据。在LINQ to SQL中...
通过对上述三种分页方案的分析可以看出,在实际应用中应根据具体情况选择合适的分页策略。如果表中有递增的唯一标识符(如ID),那么推荐使用方案二,因为它在大多数情况下提供更好的性能。若没有这样的唯一标识符,...
在三层结构的分页设计中,通常包括以下三个层次: 1. **参数层**:接收前端传来的分页参数,如当前页码和每页行数。 2. **逻辑层**:根据参数构建SQL语句。这里可以创建一个函数或者方法,接受表名、查询条件等作为...
本文将详细介绍如何在三种不同的数据库系统(SQL Server、Access、Oracle)中实现高效的SQL分页查询。 #### SQL Server 分页查询 SQL Server 支持 `TOP` 关键字,这使得在 SQL Server 中实现分页变得相对简单。...
每种方法都有其优缺点,需要根据实际的数据库规模、查询性能要求以及数据排序方式来选择最适合的方法。在处理大数据集时,优化查询性能是非常重要的,可能需要结合索引策略和其他数据库设计原则来进一步提升查询速度...
数据库SQL分页技术 数据库分页是指从大规模的数据集中提取指定的记录数,以减少数据传输量,提高应用程序的性能和用户体验。常见的数据库管理系统包括MySQL、SQL Server、Oracle、DB2等,每种数据库管理系统都有其...
SQL Server 2000不支持像后来版本的`OFFSET`和`FETCH NEXT`分页语法,但可以通过其他方式实现。常用的方法是使用`ROW_NUMBER()`函数配合子查询或`TOP`关键字。例如: ```sql SELECT * FROM ( SELECT ROW_...
aspnetpager控件是由第三方开发的,如SuperWebUI或DevExpress等,它提供了一种方便的方式来在网页上显示分页链接,允许用户按需加载每一页的数据。这个控件通常具备自定义样式、事件处理和多种分页模式等功能。 ...
通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.