百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> SQL Server 分页编号的另一种方式【举荐】
分享文章到:

SQL Server 分页编号的另一种方式【举荐】

发布时间:05/13 来源:未知 浏览: 关键词:

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

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

ROW_NUMBER():
SET STATISTICS TIME ON
SELECT
  ROW_NUMBER() OVER(ORDER BY Id DESC) rn,Id
FROM
  dbo.T_MyCourse

运转效果

UNBOUNDED PRECEDING
SET STATISTICS TIME ON
SELECT
  SUM(1) OVER(ORDER BY Id DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) rn,Id
FROM
  dbo.T_MyCourse

运转效果

通过运转之后,看到效果,运用微软官方供给的要领进行编号排序,速度显明的提高。

不过我运用上述要领进行分页获取数据的时候效果又有点不同。

分页获取数据:

ROW_NUMBER() 分页获取数据:

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

 

施行sql下令:DBCC DROPCLEANBUFFERS ,革除数据库缓存后的效果

UNBOUNDED分页获取数据:

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

 

UNBOUNDED这个方式下施行了DBCC DROPCLEANBUFFERS 革除缓存的sql也没有用,施行工夫没有变化。

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

总结

以上所述是小编给大家介绍的SQL Server 分页编号的另一种方式,但愿对大家有所帮忙,要是大家有任何疑难请给我留言,小编会及时回复大家的。在此也非常谢谢大家对我们网站的支撑!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有156人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板