sql server查询操作怎么做(sqlserver分页查询处理方法小结)
sql server查询操作怎么做
sqlserver分页查询处理方法小结sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。
下面是本人在网上查阅到的几种查询脚本的写法:
几种sqlserver2008高效分页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 table1 order 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怎么加check约束(浅析SQL Server的分页方式 ISNULL与COALESCE性能比较)
- sqlserver 查询数据库增长设置(SQL设置SQL Server最大连接数及查询语句)
- sqlserver百分比数据查询时间(SQL Server统计信息更新时采样百分比对数据预估准确性的影响详解)
- sqlserverdate格式比较(sqlserver之datepart和datediff应用查找当天上午和下午的数据)
- sql启动错误代码1814(SQLMSSQLSERVER服务启动错误代码3414的解决方法)
- SQLServer2019安装教程图文详解(SQLServer2019安装教程图文详解)
- sqlserver怎么手动添加数据库表(SQL Server 数据库调整表中列的顺序操作方法及遇到问题)
- sql server2008如何升级到2012(MS sqlserver 2008数据库转换成2000版本的方法)
- sqlserverselect选择两个参数(SQL SERVER中SELECT和SET赋值相同点与不同点推荐)
- sqlserver分页数据重复(SQL Server 在分页获取数据的同时获取到总记录数)
- sqlserver使用说明(SQL Server视图的讲解)
- sql server导入数据csv文件(大容量csv快速内导入sqlserver的解决方法推荐)
- python2.7连接sqlserver数据库(Python使用sqlalchemy模块连接数据库操作示例)
- SqlServer 表单查询问题及解决方法(SqlServer 表单查询问题及解决方法)
- sqlserver安装日志文件夹(SQL SERVER日志进行收缩的图文教程)
- sqlserver2008收缩数据文件(SQL2008 详解直接将XML存入到SQL中)
- 你知道 七夕 的真正含义吗(你知道七夕的真正含义吗)
- 七夕的寓意(七夕的寓意)
- 苏志燮赵恩静结婚,韩国四大公共财产变三人,这么快就有替补了(苏志燮赵恩静结婚)
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
热门推荐
- php内置加密函数(php过滤htmlspecialchars 函数实现把预定义的字符转换为 HTML 实体用法分析)
- mysql中的null是什么(浅谈为什么Mysql数据库尽量避免NULL)
- javascript中定义数组的方法(JavaScript中数组sort方法的基本使用与踩坑记录)
- mysql要先下服务端再下客户端吗(解读MySQL的客户端和服务端协议)
- escape()、encodeURI()、encodeURIComponent()区别
- 云服务器怎么设置端口(云服务器80端口是什么意思?)
- python3知识点汇总(Python3几个常见问题的处理方法)
- canvas两种形式动画(用canvas做一个DVD待机动画的实现代码)
- 纯css写三角形(老生常谈 使用 CSS 实现三角形的技巧多种方法)
- python的解释器怎么安装其他版本(在Python文件中指定Python解释器的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9