博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MS-SQL分页not in 方法改进之使用row_number
阅读量:5277 次
发布时间:2019-06-14

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

上一篇博客对比了not in 和 max\min分页的效率,这次来看看row_number分页效率如何

在网上扒了一个row_number的分页存储过程,源地址:,在这里稍加修改,使之更加灵活

create proc Proc_TablePage--表名@tablename nvarchar(20),--查询字段@selcolumn nvarchar(1000),--排序字段@sortcolumn  nvarchar(255),--每页记录数@pagecount  int,--页号@pageindex  intasdeclare @beginrow intdeclare @endrow intset @beginrow=0set @endrow=0set @beginrow=(@pageindex-1)*@pagecount+1set @endrow=@pageindex*@pagecountdeclare @sqlstr nvarchar(4000)set @sqlstr='with table1 as(select '+ @selcolumn +',ROW_NUMBER() OVER(ORDER BY '+ @sortcolumn+' ) AS ROW'+            ' FROM '+@tablename+') 'set @sqlstr=@sqlstr +' SELECT '+ @selcolumn +' FROM TABLE1 WHERE ROW BETWEEN '+cast(@beginrow as nvarchar )+' and '+cast(@endrow as nvarchar)exec(@sqlstr)

not in max\min 和row_Number三者sql:

declare @t datetimeset @t = getdate()select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID not in (select top 9990 ID from Test1 order by ID desc) order by ID desc select [not in方法降序分页执行花费时间(毫秒)]=datediff(ms,@t,getdate()) declare @u datetimeset @u = getdate()exec Proc_TablePage 'Test1',' ID, U_Name,U_Age,U_Address,U_Sex ','ID desc',10,1000select [Row_Number方法降序分页执行花费时间(毫秒)]=datediff(ms,@u,getdate())declare @q datetimeset @q = getdate()select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID <=(select min(ID) from (select top 9991 ID from Test1 order by ID desc) as T) order by ID descselect [Min方法降序分页执行花费时间(毫秒)]=datediff(ms,@q,getdate())

执行结果:

由此得出结论:三者的分页效率从高到低依次是Max\Min、row_number、not in!

转载于:https://www.cnblogs.com/New-world/archive/2012/11/28/2793520.html

你可能感兴趣的文章
window.setTimeout() 和 window.setInterval() 使用说明
查看>>
大数据组件
查看>>
ActionResult的其它返回值
查看>>
Mac零散小技巧
查看>>
#135. 二维树状数组 3:区间修改,区间查询
查看>>
Python--day6
查看>>
UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
查看>>
第六天
查看>>
js 格式化带时区的日期
查看>>
CSS中隐藏内容的3种方法及属性值
查看>>
每天一个linux命令(1):ls命令
查看>>
根据xml生成相应的对象类
查看>>
查看ASP.NET : ViewState
查看>>
Android StageFrightMediaScanner源码解析
查看>>
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
循环队列实现
查看>>
获取表单提交的数据getParameter()方法
查看>>
CSS层模型
查看>>
springBoot 项目 jar/war打包 并运行
查看>>
HDU 1501 Zipper
查看>>