当前位置:  开发笔记 > 编程语言 > 正文

填充数据表时,datareader是否比数据集更快?

如何解决《填充数据表时,datareader是否比数据集更快?》经验,为你挑选了3个好方法。

哪个会更快.

1)循环datareader并基于填充的数据表创建自定义行和列

2)或者创建一个dataAdapter对象并且只是(填充)一个数据表.

在动态创建数据表时,数据加载器的性能是否仍然适用?



1> Jon Skeet..:

假设您确实希望从数据库返回所有数据,那么在数据库和网络上花费的时间几乎肯定会使在进程中填充内存中的数据结构所花费的时间相形见绌.

是的,在某些情况下,您可以通过使用DataReader进行小额保存 - 特别是如果您想要流式传输数据可能会有用 - 但如果您确实需要它,那么我会坚持使用最简单的代码.如果您认为DataSet群体导致严重的性能问题,请对其进行概要分析,然后尝试对其进行改进.



2> Corbin March..:

DataAdapter在引擎盖下使用DataReader,因此您的体验可能会相同.

DataAdapter的好处是可以删除大量需要维护的代码.

这场辩论有点宗教问题,所以一定要四处寻找并确定哪种方式最适合您的情况:

http://blogs.msdn.com/memilavi/archive/2008/02/18/datareader-vs-dataset-the-real-question.aspx

http://xcskiwinn.org/community/blogs/panmanphil/archive/2004/09/21/281.aspx

http://weblogs.asp.net/joelevi/archive/2008/02/12/asp-net-datareader-vs-dataset.aspx

http://weblogs.asp.net/dreilly/archive/2003/09/27/29411.aspx



3> Joel Coehoor..:

您的选项#1会慢一些.但是,有一种更好的方法可以将datareader转换为数据表,而不是手动添加自定义行:

DataTable dt = new DataTable();

using (SqlConnection conn = GetOpenSqlConnection())
using (SqlCommand cmd = new SqlCommand("SQL Query here", conn)
using (IDataReader rdr = cmd.ExecuteReader())
{
    dt.Load(rdr);
}

我无法评论这与使用之间的区别.Fill().

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有