sql server 分页
语句形式:
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) 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的游标存储过程分页) 效率最差,但是最为通用
在实际情况中,要具体分析。
***********************
(本人在max()里面的字段,也就是order by的字段建了索引,在数据量很大的情况下第一种方案的速度是第二种方案的上百倍)
***********************
转载于:https://blog.51cto.com/xu20cn/77999
sql server 分页相关推荐
- 解决hibernate对Sql Server分页慢的问题
解决hibernate对Sql Server分页慢的问题 参考文章: (1)解决hibernate对Sql Server分页慢的问题 (2)https://www.cnblogs.com/firstd ...
- SQL Server分页存储过程实践(图解)
下面来对SQL Server分页存储过程进行一下实做.图解成功的各个步骤. 一 找到大数据量的示例表 分页都是针对大记录数的表:反之有大记录数的表,可能就需要分页.例如银行用户表,就会上千万.下面先做 ...
- 优化的ms sql server分页sql语句
优化的ms sql server分页sql语句 发布时间: 2009-8-15 00:00 | 发布作者: hjh | | 查看: 3次 特点:一次查询,数据库Databnse只返回一页的数据 ...
- sql server分页_SQL Server中的分页
sql server分页 Pagination is a process that is used to divide a large data into smaller discrete pages ...
- sql server分页_SQL Server中的分页简介
sql server分页 Wikipedia Pagination is the process of dividing content (i.e. website search results, n ...
- SQL Server分页查询方法整理
SQL Server数据库分页查询一直是SQL Server的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页 ...
- SQL Server 分页+json分享
1.SQL Server 版本2012+ 新增SQL分页的写法 最近封装一个轻量级的ORM用到了分页,以前只知道使用Row_Number函数,现在发现sqlserver 新增的 {orderBy} o ...
- C#调用SQL Server分页存储过程
以SQL Server2012提供的offset ..rows fetch next ..rows only为例 e.g. 表名:Tab1 ------------------------------ ...
- 曾经用过的Sql Server分页方法小结
工作这些年, 数据库分页也用过几种方案, 总结如下: 1.用row_number函数及临时表分页, 适用sql 2005/2008. 大致思路如下: SELECT *, ROW_NUMBER() OV ...
最新文章
- redis.conf配置选项如下
- 计算机缺少php5.dll,php5isapi.dll 64位
- boost::hana::compose用法的测试程序
- 非负矩阵分解推导(NMF)
- 【Vue2.0】—事件处理和事件修饰符(二)
- iOS中使用UIActivityViewController系统分享到微信QQ微博包含文字图片URL
- git 远程代码被覆盖
- 【转】推荐一款Java反编译器,比较好用
- 黑莓8330、8830写号,上网,输入法,汉化
- 怎么升级计算机的操作系统,电脑如何升级系统版本_Windows10/7电脑升级系统版本的操作步骤...
- 服务器网卡,10GE设备相关笔记
- python修改xml文件内容,不废话,拿来即用
- 2018DeeCamp笔试题目第一套B卷
- 优先级Priority
- eot文件html,html – 为什么IE8没有加载我的eot文件?
- c语言中不能在变量名函数名关键字中插入,C语言中,不能在变量名、函数名、关键字中插入空格和空行。...
- 串口编程 - ascii字符与16进制的相互转换
- java中的逻辑结构
- 服务器物理架构部署图,部署图
- php程序员要不要转java
热门文章
- linux加密框架 crypto 算法管理 - 算法查找接口
- Linux加密框架crypto AES代码相关
- 英语口语-文章朗读Week10 Monday
- C语言 socket 编程学习
- 解决: Elements in iteration expect to have ‘v-bind:key‘ directives
- 版本控制:集中式(SVN) vs 分布式(GIT)
- 解决: java.net.ConnectException: Connection refused: connect
- Java中Web程序修改配置文件不重启服务器的方法
- 只用一套解决方案,就可解决80%的交通物流行业信息难题
- JS内置方法(Array)