今天看书讲T-SQL,看到了UNBOUNDED PRECEDING,就想比对下ROW_NUMBER()的运行速度。

sql及相关的结果如下,数据库中的数据有5W+。

ROW_NUMBER():SET STATISTICS TIME ONSELECT  ROW_NUMBER() OVER(ORDER BY Id DESC) rn,IdFROM  dbo.T_MyCourse

UNBOUNDED PRECEDINGSET STATISTICS TIME ONSELECT  SUM(1) OVER(ORDER BY Id DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) rn,IdFROM  dbo.T_MyCourse

通过运行之后,看到结果,使用微软官方提供的方法进行编号排序,速度明显的提高。

不过我使用上述方法进行分页获取数据的时候结果又有点不一样。

分页获取数据:

ROW_NUMBER() 分页获取数据:

SET STATISTICS TIME ONSELECT  *FROM  (  SELECT    ROW_NUMBER() OVER(ORDER BY Id DESC) rn,Id  FROM    dbo.T_MyCourse  )aWHERE  a.rn BETWEEN 55 AND 444

UNBOUNDED分页获取数据:

SET STATISTICS TIME ONSELECT  *FROM  (  SELECT    SUM(1) OVER(ORDER BY Id DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) rn,Id  FROM    dbo.T_MyCourse  )aWHERE  a.rn BETWEEN 22 AND 444

通过上述结果,看到ROW_NUMBER()获取分页的数据明显更快,我猜测是微软对ROW_NUMBER()这个方法做了优化,可能是有缓存,读取的缓存中的数据然后进行分页。

总结

更多相关文章

  1. android SQLiteDatebase 实践
  2. android分页查询获取系统联系人信息
  3. Android入门教程(三十一)------SQLite分页读取
  4. android ListView的分段显示、分页显示(附源码)
  5. android左右滑动加载分页以及动态加载数据
  6. Android(安卓)listview怎么实现滚动分页
  7. Android(安卓)ListView专题之十二 分页不同的解决方案
  8. Android分页控件xlistview
  9. android中滑动SQLite数据库分页加载

随机推荐

  1. javascript基本知识点梳理总结
  2. 炫酷的手风琴效果
  3. JavaScript 对象及初识面向对象
  4. script标签写在哪里好?
  5. JavaScript中两个感叹号的作用
  6. [持续更新]JavaScript学习笔记(五)
  7. 动态定位Bootstrap工具提示(用于动态生成
  8. 如何在详细信息标记的结束事件上添加CSS
  9. javascript实现查看html网页放大图片功能
  10. 原生javascript-图片弹窗交互效果