比如说我数据库的数据有个上千万条,因为我每次分1下页都要全部且重新查询一次,这样数据多了效率差.
现在我问哈有没有好点提高效率的方法.

解决方案 »

  1.   

    用自定義分頁存儲過程
    CREATE procedure pagination1
    (@pagesize int, --页面大小,如每页存储20条记录
    @pageindex int --当前页码
    )
    asset nocount onbegin
    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
    endset nocount off
      

  2.   

    我学得这个不是太好,临时表太大我曾经尝试,select top ... max(id) ......
    两次TOP之后select .... id > ... and id <...
      

  3.   

    如果想避免频繁读取数据库,你可以使用sqlDataSource数据源,并设置 sqlDependency。参考:http://www.google.cn/search?q=sqldatasource%20sqldependency&hl=zh-CN&newwindow=1&rls=com.microsoft%3Aen-US&lr=lang_zh-CN%7Clang_zh-TW&nxpt=20.01422355628455701513223