日期:2014-05-18  浏览次数:20374 次

分页效率的问题
比如说我数据库的数据有个上千万条,因为我每次分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
------解决方案--------------------
我学得这个不是太好,临时表太大

我曾经尝试,select top ... max(id) ......
两次TOP之后

select .... id > ... and id <...
------解决方案--------------------
如果想避免频繁读取数据库,你可以使用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