这个问题咋回答你呢? 你所只的高效是需要处理多少数据以上才能称为高效?那我就在这里做个比较吧:
当你使用服务器端控件进行分页时,他是很方便但是在处理较多数据时就变得非常慢了,原因是每次进行页面跳转其实他是查询了表中所有数据,导致执行效率低。
我平时处理分页的方法是通过数据库写存储过程来实现,这样的好处是空间和数据库服务器都能合理进行数据处理就不会导致某一台服务器cpu上彪,另一台基本啥都不做合理分配资源,虽谈不上什么高效,但相对GridView这些控件的自带分页要快些了。
alter PROCEDURE GetPageDataOutRowPageCount
(
@PageIndex int = 1,--当前页数
@PageSize int = 4,--每页大小
@NowPage int = 1,--根据传入栏目id要加载当前页的数据
@RowCount int output,--总行数(传出参数)
@PageCount int output--总页数(传出参数)
)
AS
begin
DECLARE @sql NVARCHAR(225)
select @RowCount =COUNT(FCaseChildId),@PageCount=CEILING((COUNT(FCaseChildId)+0.0)/@PageSize) FROM TCaseContent where FParentsId=@NowPage
SET @sql='SELECT TOP '+str(@PageSize) +' * FROM TCaseContent where FParentsId='+str(@NowPage)+' and FCaseChildId not in(select top '+str((@PageIndex-1)*@PageSize) +' FCaseChildId from TCaseContent where FParentsId='+str(@NowPage)+')'
EXEC(@sql)
end
|