科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道比较SQL Server2005和2008的分页技术

比较SQL Server2005和2008的分页技术

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我们以前在开发大数据量的分页存储过程时,往往都为了怎么样实现高效的性能,而大伤脑筋,似乎总是想写出最佳的存储过程分页方法。本文通过实例比较SQL Server 2005与SQL Server 2000分页存储技巧。

来源:比特网 2008年4月11日

关键字: 技巧 SQL 数据库 SQL 2008 SQL Server

  • 评论
  • 分享微博
  • 分享邮件
在Sql Server 2005中,我们可以利用新增函数row_number()来更高效的实现分页存储

  CREATE PROCEDURE p_GetStudentInfo
  @PageSize INT,
  @PageIndex INT,
  @strWhere varchar(1500) -- 查询条件(注意: 不要加where)
  As
  Begin
  select * from (
  select row_number() over (order by StudentInfoId) row,* from StudentInfo ) StudentInfo
  where row between @PageSize*(@PageIndex-1) and @PageSize*@PageIndex
  End
  go

  依照群组显示每条记录在该群组中出现的顺序位置,在显示每条记录编号时非常有用,并且搭配OVER子句,这样就可以实现查询记录的条数了。

  我们现在来比较一下它们执行的性能,StudentInfo表中现在有30多万条数据,我们分别来执行下面的存储过程:

  Exec p_GetStudentInfo
  @PageSize = 10000,
  @PageIndex = 10,
  @strWhere = '1=1'

  在Sql Server 2000中,执行的时间是接近2秒;

  在Sql Server 2005中,执行的时间显示的是接近0秒。

  如果数据涉及到千万级的数据时,比较上面两种方法,就可以看到一些显著的差别了。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章