转自老徐博客 http://frankxulei.blog.51cto.com/1596834/320999

 DataSet和SqlDataReader的比较的文章和帖子网上已经很多,我也看了很多前辈的随笔.自己在面试和实际工作中也遇到这样的问题.但是始终是没深入进行学习.最近在工作空闲之余,特地查阅了一些文章,也包括msdn的官方文档.自己建立数据库和测试程序,对DataSet和SqlDataReader做了比较.

   首先关于两者比较主流的观点就是:

1.DataReader使用时始终占用SqlConnection,在线操作数据库.DataSet则是将数据一次性加载在内存中.支持数据库访问的断开连接模型.

2.DataReader每次只在内存中加载一条数据,节约内存.DataSet将数据全部加载在内存中.比较消耗内存.

3.DataReader单向只读.DataSet支持查询\修改\删除等操作,比较灵活.

4.DataReader与 SqlCommand搭配.DataSet与DataAdapter 结合使用.


1.在查询数据量很少的情况下100条内,DataReader和DataSet几乎没有什么明显的性能差别.

2.数据量过大,接近10000条的时候的数据查询,DataReader的性能要明显优于DataSet.

对于两者的性能对比,不应该轻易下结论,除了参考实验设备,也要考虑实际的数据规模.

具体项目应用中,选择适合具体需求的对象进行数据处理,才能有效的提高系统的性能.