sqlserver分页查询处理方法小结

作者:shmily_sanyan 时间:2024-01-13 19:50:23 

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分页查询处理方法小结网站的支持!

来源:http://blog.csdn.net/qq_20114109/article/details/76430980

标签:sqlserver,分页,查询
0
投稿

猜你喜欢

  • 微信小程序使用npm支持踩坑

    2024-04-22 13:07:40
  • 微信小程序分享海报生成的实现方法

    2024-05-02 17:29:49
  • python中argparse模块用法实例详解

    2022-01-09 23:34:40
  • Python可视化分析全球火山分布

    2022-01-17 05:32:10
  • 200个Python 标准库总结

    2023-08-26 02:00:48
  • python实现pptx批量向PPT中插入图片

    2021-10-05 23:18:29
  • Python内置函数详细解析

    2021-08-19 21:03:35
  • 详解python字符串驻留技术

    2023-09-25 21:49:25
  • Python接口自动化浅析logging封装及实战操作

    2022-12-04 12:21:44
  • 使用mss2sql工具将SqlServer转换为Mysql全记录

    2024-01-24 11:59:37
  • Python浅析匿名函数lambda的用法

    2022-07-19 18:29:29
  • python操作yaml说明

    2022-03-05 14:47:43
  • Python序列操作之进阶篇

    2021-03-28 11:08:58
  • django 连接数据库出现1045错误的解决方式

    2024-01-17 19:37:47
  • Centos下升级php5.2到php5.4全记录(编译安装)

    2024-05-05 09:18:30
  • Python基于property实现类的特性操作示例

    2022-08-07 11:02:08
  • 树莓派安装OpenCV3完整过程的实现

    2023-11-06 06:26:08
  • 基于OpenCv实现的人脸识别(附Python完整代码)

    2022-08-10 21:49:27
  • Linux环境下安装MySQL8.0的完整步骤

    2024-01-22 05:26:47
  • python内置数据类型之列表操作

    2023-04-08 02:17:36
  • asp之家 网络编程 m.aspxhome.com