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 英文单词全字匹配详解及实现代码(SqlServer 英文单词全字匹配详解及实现代码)
- sqlserver技术文档(sql server2016里面的json功能浅析)
- sqlserver常用流控语句(SQL Server实现自动循环归档分区数据脚本详解)
- sqlserver改表结构不允许(SQL Server阻止保存修改表结构的解决方法)
- sqlserver2008手动备份方法(MSSQL 2008 自动备份数据库的设置方法)
- sqlserver基础查询语句(SQL Server子查询的深入理解)
- sqlserver数据库实时同步(SQL Server实时同步更新远程数据库遇到的问题小结)
- sqlserver 查询锁(sqlserver:查询锁住sql以及解锁方法)
- sqlserver字符串截取填充(SQL Server实现split函数分割字符串功能及用法示例)
- sqlserver2016的安装(Sql Server2016 正式版安装程序图解教程)
- sqlserver 使用SSMS运行sql脚本的六种方法(sqlserver 使用SSMS运行sql脚本的六种方法)
- sqlserver表分区缺点(SQL Server 公用表表达式CTE实现递归的方法)
- sqlserver表分区步骤(行转列之SQL SERVER PIVOT与用法详解)
- sqlserver电脑休眠时断开连接(浅谈sqlserver下float的不确定性)
- sqlserver表空间占用率(SQL Server获取磁盘空间使用情况)
- 爱情可以当饭吃吗(爱情能当饭吃吗)
- Top 3 JSHS《运动与健康科学 英文 》跻身SCI体育学期刊世界前三(Top3JSHS运动与健康科学)
- 体坛传媒LOGO全新升级,多元发展迈出坚实步伐(体坛传媒LOGO全新升级)
- 超撩人治愈的绝美水彩,原来出自她之手 一笔一画令无数人沉醉(超撩人治愈的绝美水彩)
- 新手的勾线(新手的勾线)
- ()
热门推荐
- thinkphp接口开发实例(ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解)
- 将SQL Server数据迁移到MySQL的方法
- iis默认文档位置(在IIS6中新增可下载文件类型的方法)
- sqlserver多表查询(sqlserver 树形结构查询单表实例代码)
- python学生管理系统与数据库(python学生管理系统学习笔记)
- mysql表结构设计分享(MySql开发之自动同步表结构)
- unix进程空间的区段(Unix/Linux fork隐藏的开销)
- webpack打包公共文件(webpack文件打包错误异常)
- dedecms独立页面怎么加(DEDECMS实现文章tag关键词自动生成列表页的方法)
- FileZilla Server搭建FTP服务器配置及425错误与TLS警告解决方法详解(FileZilla Server搭建FTP服务器配置及425错误与TLS警告解决方法详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9