• λ我爱Aspx >> C#.Net >> sql存储过程分页算法研究
  • sql存储过程分页算法研究

  • :aspxer  Դ:5iaspx  :2007-7-30 6:14:23  ؼ:sql
  • 1.“俄罗斯存储过程”的改良版

    CREATE procedure pagination1

    (@pagesize int, --页面大小,如每页存储20条记录

    @pageindex int --当前页码)

    as set nocount on

    begin

    declare @indextable table(id int identity(1,1),nid int) --定义表变量

    declare @PageLowerBound int --定义此页的底码

    declare @PageUpperBound int --定义此页的顶码

    set @PageLowerBound=(@pageindex-1)*@pagesize

    set @PageUpperBound=@PageLowerBound+@pagesize

    set rowcount @PageUpperBound

    insert into @indextable(nid) select gid from TGongwen where fariqi >dateadd(day,-365,getdate()) order by fariqi desc

    select O.gid,O.mid,O.title,O.fadanwei,O.fariqi from TGongwen O,@indextable t where O.gid=t.nid

    and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id

    end

    set nocount off

    文章中的点评:

    以上存储过程运用了SQL SERVER的最新技术――表变量。应该说这个存储过程也是一个非常优秀的分页存储过程。当然,在这个过程中,您也可以把其中的表变量写成临时表:CREATE TABLE #Temp。但很明显,在SQL SERVER中,用临时表是没有用表变量快的。所以笔者刚开始使用这个存储过程时,感觉非常的不错,速度也比原来的ADO的好。但后来,我又发现了比此方法更好的方法。

    Ҷƪл˵?
  • һƪC#中实现VB中的CreateObject方法
    һƪ用Photoshop通道打造“非主流”淡彩照片