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

GridView在数据量在超过2万行时速度变得很慢,在超过10万时慢得无法忍受,如何解决?
绑定一个ObjectDataSource数据源。翻页动作变得很慢。

根据我的理解,虽然只显示一页数据,系统还是把表中所有数据读取到了内存中。所以会很慢。

如何才能让系统只读显示GridView中的一页所需数据呢?

------解决方案--------------------
随便说说sql2005里面好像有分页数据函数的
------解决方案--------------------
利用存储过程啊,去找个分页的存储过程,CSDN多的很

每次只读取显示的条目
------解决方案--------------------
动态加载, 使用Ajax
------解决方案--------------------
给数据库字段设置主键和索引,在查找数据的时候首先查询主键或者索引;利用数据分页和存储过程提高效率肯定可以提升你查询的速度;
------解决方案--------------------
对于比较大的数据显示,都没有用Gridview中内置的分页功能的,就是效率问题!!!
大多数都是在存储过程中分页。
------解决方案--------------------
存储过程页配合gridview自定义分页,每页显示条数不要设太大.如果可能最好的办法是生成静态页面。
------解决方案--------------------
优化数据库的同时,使用存储过程分页啊
我自己测试过的1000W的数据,小于1秒的反映时间
------解决方案--------------------
用存储过程分页可以提高效率
如果lz要的话我可以发一个给你
我的邮箱ilrfn@163。com
------解决方案--------------------
使用存储过程分页 效率提高很多 楼主可以尝试一下

CREATE PROCEDURE CunChuFenYe
(
@PageSize int,
@PageIndex int,
@Condition varchar(255),
@TheTable varchar(255),
@SelectField varchar(255),
@TableID varchar(255)
)
AS

begin
declare @Sql varchar(5000)
declare @numb int
declare @ll varchar(255)
set @numb=@PageSize*(@PageIndex-1)
set @ll=cast(@numb as varchar(255))
set @Sql='select top '+cast(@PageSize as varchar(255))+' '+@SelectField+' from '+@TheTable+@Condition+' where '+@TableID+' not in (select 
top '+@ll+' '+@TableID+' from '+@TheTable+@Condition+' '+') '
exec(@Sql)
set @Sql='select count('+@TableID+') from '+@TheTable+@Condition
exec(@Sql)
end
GO


------解决方案--------------------
存储过程分页或者top+top分页,勿全部加载,否则性能估计要把服务器拖死
------解决方案--------------------
数据库中写分页存储过程,每次只取出当前页面的数据,G前台ridview不要用自带分页,自己手写,把当前页码传给存储过程作为参数!