这两天测试了泛型+实体类翻页和 dataset绑定翻页。都使用了同一个存储过程。发现在2KW级别在现实首页及前面的页数,两者差距不是很大,可以接受。但从尾页向前翻页时,dataset比泛型慢了4.5倍!奇怪了,存储过程都一样,返回了数据都一样,怎么差距那么大呢?
问题补充:一个是返回ds
return db.ExecuteDataSet(cmd);
另一种返回泛型
List<Model.NoteInfo> list = new List<Model.NoteInfo>();using (IDataReader dataReader = DBConnection.ExecuteReader(cmd))
{
while (dataReader.Read())
{
list.Add(ReaderBind(dataReader));
}
}
return list其他代码没有什么不同,首页和尾页泛型速度基本一致,唯独dataset返回的尾页效率慢了4.5倍左右,怎么回事?

解决方案 »

  1.   

    dataset是从内在中加载数据比较慢消耗资源 用SqlDataReader比较快
      

  2.   

    和泛型不泛型没有关系,填充DataSet本身就比只用DataReader读取数据要耗费更多时间,建议你用存储过程只获取当前页的数据,不要每分一次页,就把所有数据都取出来填充到DataSet中再分页,那样的效率非常低,用存储过程配合AspNetPager分页控件分页方便又高效。
    =============================
    www.webdiyer.com
      

  3.   

    楼上两位,我只取了几条记录而已,不存在dataset比datareader耗时很多的问题,现在的问题是取尾页记录比首页慢很多,比较奇怪