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表空间占用率(SQL Server获取磁盘空间使用情况)
- sqlserver新建连接服务器卡住(SQL Server成功与服务器建立连接但是在登录过程中发生错误的快速解决方案)
- sqlserver 存储过程(SQL Server解析XML数据的方法详解)
- sqlserver完全删除教程(sql server编写archive通用模板脚本实现自动分批删除数据)
- sql中去除重复记录的关键字(sqlserver查询去掉重复数据的实现)
- sqlserver查看数据表更新时间(SQL Server实现显示每个类别最新更新数据的方法)
- sqlserver中根据类型分组(SQL SERVER 分组求和sql语句)
- sqlserver分组查询(sql server如何利用开窗函数over进行分组统计)
- sqlserver快照表(详解SQL Server 2016快照代理过程)
- sqlserver代理无法启动错误1607(SQL Server代理:理解SQL代理错误日志处理方法)
- sqlserver如何生成xml文件(实现SQL Server 原生数据从XML生成JSON数据的实例代码)
- sqlserver分页查询sql语句(sql server实现分页的方法实例分析)
- sqlserver表值函数用法(SQL Server数据库中的表名称、字段比较)
- sqlserverselect选择两个参数(SQL SERVER中SELECT和SET赋值相同点与不同点推荐)
- sqlserver游标使用场景(解析SQL Server聚焦移除Bookmark Lookup、RID Lookup、Key Lookup)
- sqlserver索引介绍(浅析SQL Server的聚焦使用索引和查询执行计划)
- 休闲VS新古典 办公家居简约设计(办公家居简约设计)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
- 记者手记 书记带我去 巡街(记者手记书记带我去)
- 富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元 | 美通社(富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元)
- 二次创业 的富士胶片,在进博会上首次展示完成转型后的全线医疗产品(二次创业的富士胶片)
- 富士胶片 中国 我们对上海的信心没有任何改变(富士胶片中国)
热门推荐
- 怎么把csv文件导入mysql(mysql导入csv的4种报错的解决方法)
- win7用iis搭建服务器(win7配置iis服务器图文教程)
- css控制表格换行
- sqlserver表分区缺点(SQL Server 公用表表达式CTE实现递归的方法)
- SQL中Exists的用法
- 织梦怎么设置栏目列表(dedecms织梦给后台管理员列表增加搜索功能的示例代码)
- linuxsamba怎么连接(Linux Samba服务器超详细安装配置附问题解决)
- 百度免费翻译接口(基于python实现百度翻译功能)
- idea里面怎么配置tomcat(intellij idea 使用Tomcat部署的项目位置在哪)
- mysql 主从配置详解(MySQL 8.0.15配置MGR单主多从的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9