欢迎光临
我们一直在努力

SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作-ASP教程,数据库相关

建站超值云服务器,限时71元/月

最近msdn magazine上的一篇文章10 tips for writing high-performance web applications提到了有效的数据分页技术对提高asp .net程序性能的重要性;并给出了一个实现数据分页的stored procedure的例子,抄录如下:

create procedure northwind_orderspaged

(

@pageindex int,

@pagesize int

)

as

begin

declare @pagelowerbound int

declare @pageupperbound int

declare @rowstoreturn int

— first set the rowcount

set @rowstoreturn = @pagesize * (@pageindex + 1)

set rowcount @rowstoreturn

— set the page bounds

set @pagelowerbound = @pagesize * @pageindex

set @pageupperbound = @pagelowerbound + @pagesize + 1

— create a temp table to store the select results

create table #pageindex

(

indexid int identity (1, 1) not null,

orderid int

)

— insert into the temp table

insert into #pageindex (orderid)

select

orderid

from

orders

order by

orderid desc

— return total count

select count(orderid) from orders

— return paged results

select

o.*

from

orders o,

#pageindex pageindex

where

o.orderid = pageindex.orderid and

pageindex.indexid > @pagelowerbound and

pageindex.indexid < @pageupperbound

order by

pageindex.indexid

end

在sql server 2000里面,由于没有一个有效的进行ranking操作的方法,所以该例子先创建了一个有identity字段的临时表,利用identity字段的自增长特性,间接的为orders表的每一行按orderid逆序赋予了一个行号, 然后基于这个行号实现分页。

在sql server 2000里面,由于系统提供了内建的ranking函数,为了给orders表生成行号,我们不再需要利用identity字段。

例如,利用sql server 2000的row_number()函数,按orderid字段逆序排列,给orders表生成行号的语句如下:

select row_number() over(order by ordered desc) as rownum, ordered

from orders

order by rownum desc

基于这些新的ranking函数,您可以跟方便的实现数据的分页操作。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » SQL Server 2005: 利用新的ranking函数实现高效的数据分页操作-ASP教程,数据库相关
分享到: 更多 (0)

相关推荐

  • 暂无文章