.net中SQL查询数据量过大,分批填充dataset问题,请教如何分批填充,
.net中SQL查询数据量过大,
造成页面访问超时,
请教如何分批填充dataset问题,?
或者是否还有其它解决方式.?
谢谢!
问题点数:20、回复次数:7Top
1 楼cic_wxf(我憎恨这个社会,但是不想报复这个社会)回复于 2006-07-04 21:53:02 得分 0
我觉得没有必要一次性将数据全部提取出来
可以有条件的读取把Top
2 楼fxqyyzg(海冬青)(昨夜西风凋碧树。独上高楼,望尽天涯路)回复于 2006-07-04 21:57:50 得分 0
作一个存储过程,每次只取你的DataGrid所要显示的那页Top
3 楼nenuphar(nenuphar)回复于 2006-07-05 08:45:28 得分 0
是用的存储过程取数.因为是要生成报表,一次最多的时候要取十万以上的数,
填充DATASET的时候就超时了,
不知道是不是可以填充时分次填充,
或者还有其它方法解决超时问题,
请多多指教,
谢谢Top
4 楼nenuphar(nenuphar)回复于 2006-07-05 15:58:52 得分 0
ji ji ji jiTop
5 楼yiming0755()回复于 2006-07-05 16:31:51 得分 0
存储过程分页来解决:
首先3个变量要控制好:
1,每次读取的记录树n。
2,总页数,也就是总记录数/n。
3,要读的页码数。
这是一个简单的范例,用来对PUBS数据库中的jobs表进行分页读取,传入一个要读取的页码值和
每叶显示的记录数就OK了。至于怎样传入要读取的页码值,我的做法是:用总记录数/每页显示记录数,就算出了应该分多少页显示,然后根据这个算出的值动态创建N个LinkButton,在每个LinkButton里委托一个方法来读记录就OK了。
CREATE PROCEDURE sp_newProc
@pageInd int,@pageNum int
as
declare @sql nvarchar(4000)
set @sql='select top ' +cast( @pageNum as varchar) + ' * from jobs where job_id not in (select top ' + cast((@pageInd-1)*@pageNum as varchar) +' job_id from jobs)'
print @sql
exec (@sql)
GO
Top
6 楼yiming0755()回复于 2006-07-05 16:33:14 得分 0
@pageInd 是页码,@pageNum 是每页显示的记录数。Top
7 楼Amos629()回复于 2006-07-05 19:37:54 得分 0
up!!
支持yiming0755
我也是采用DataGrid分页来处理的Top




