请高手指点 ,sql server 数据库中表eligibleYouth有记录56万条,如何分页查询速度控制在5秒以内,详见如下:
我的机器配置:P4 2.8G 内存 512
现项目经理给一个死任务:
不管使用什么方法,让第一次显示最后一页的速度在5秒内,页面大小为50条记录。
也就是说,第一次显示的页面是分面后最后一页的数据。
我的数据库中的这个表没有进行任何的优化,主键是id.
我试了在查询分析器中运行下面的语句:
select top 50 * from EligibleYouth
where id >(select max( id)
from(select top 559950 ID
from EligibleYouth
ORDER BY id) AS EligibleYouth )
ORDER BY ID
所要的时间都在10秒以上,请高手指点,如何才能提高第一次显示最后一页的速度,数据库要做什么样的优化,跪求!!!!
问题点数:0、回复次数:2Top
1 楼fengfangfang()回复于 2005-06-02 15:48:25 得分 0
http://community.csdn.net/Expert/topic/4033/4033897.xml?temp=6.760806E-02Top
2 楼zkhj(学习.Net中......)回复于 2005-07-22 13:44:56 得分 0
--***************************
--分页用存储过程
--***************************
CREATE procedure p_splitpage
@sql nvarchar(4000),--要执行的sql语句
@pagesize int=10,--每页的大小
@currentpage int=1, --要显示的页码
@pagecount int=0 out--总页数
as
set nocount on
declare @p1 int
,@BeginRow int
,@RowCount int
exec sp_cursoropen @p1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@RowCount output
--exec sp_cursoropen @P1 output,@sql,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select @pagecount=ceiling(1.0*@RowCount/@pagesize)
,@BeginRow=(@currentpage-1)*@pagesize+1
select @RowCount as RowTotalCount,@pagecount as PageCount, @BeginRow as BeginRow
exec sp_cursorfetch @p1,16,@BeginRow,@pagesize
exec sp_cursorclose @p1
GO
--*************
--调用方法如下
--**************
exec p_splitpage 'SQL语句',每页的记录条数,第几页Top




