博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver两种分页方法比较
阅读量:5856 次
发布时间:2019-06-19

本文共 589 字,大约阅读时间需要 1 分钟。

-- 3000 page(从1开始) 10 pagesize --

 

方法1(效率不高):

SELECT TOP 10 * FROM [xxx].[oooo]

WHERE
id NOT IN
(SELECT TOP (10*(3000-1)) id FROM [xxx].[oooo] ORDER BY createtime DESC)
ORDER BY createtime DESC;

 

方法2(效率高):

SELECT TOP 10 *

FROM
(SELECT ROW_NUMBER() OVER (ORDER BY createtime DESC) AS RowNumber,* FROM [xxx].[oooo]) as A
WHERE RowNumber > 10*(3000-1) ORDER BY createtime DESC;

 

方法1没什么好讲的,方法2是利用ROW_NUMBER()函数给表oooo的数据按照createtime字段ORDER BY的顺序给每条数据加上一个序号,然后把这个RowNumber和其它列组成一个新表,再根据这个RowNumber进行分页。

 

ps:ROW_NUMBER()函数在sqlserver 2005之后才有

 

效果的话,我的表有6W多数据,每页10条数据查询第3000页,方法1平均需要6 7s,方法2平均只需要0.1 2s。

转载地址:http://lrojx.baihongyu.com/

你可能感兴趣的文章
Ember.js 3.9.0-beta.3 发布,JavaScript Web 应用开发框架
查看>>
python标准库00 学习准备
查看>>
4.2. PHP crypt()
查看>>
commonservice-config配置服务搭建
查看>>
连接池的意义及阿里Druid
查看>>
ComponentOne 2019V1火热来袭!全面支持 Visual Studio 2019——亮点之WinForm篇
查看>>
Python递归函数与匿名函数
查看>>
loadrunner安装运行一步一步来(多图)
查看>>
监控工具htop的安装及使用
查看>>
Nodejs使用图灵机器人获取笑话
查看>>
Spring 任务调度 简单的,使用Schedule
查看>>
SQL 2005删除作业计划出错(DELETE语句与 REFERENCE约束"FK_subplan_job_id"冲突。)的解决...
查看>>
【Touch&input 】支持多个游戏控制器(18)
查看>>
我的友情链接
查看>>
SQL语句学习
查看>>
What is Cluster Aware Updating in Windows Server 2012?
查看>>
进老男孩的自我介绍和决心书
查看>>
线上Linux服务器运维安全策略经验分享
查看>>
Android一些问题的解决方案
查看>>
Luogu P4707 重返现世
查看>>