【问题标题】:Update Cells in an In Memory Data table更新内存数据表中的单元格
【发布时间】:2011-05-31 18:26:34
【问题描述】:

好的,到目前为止的故事是我有一个数据表,大约 10,000 行左右。每行大约 150 列。在此数据表中或多或少 150.000 个单元格。我的所有更新工作正常 但是更新很慢。 我需要遍历一个 porcedures 列表,然后根据过程更新表中的单元格。当我完成更新时,大约 75% - 80% 的所有单元格都会发生变化。 我正在使用分配给 INT 值的主键索引对表进行搜索。

datatable.rows.find() 似乎快一点 datatable.select(expression) 几乎相同但差别不大。

有没有什么想法可以加快速度。更换 80,000 - 120,000 个细胞可能需要几分钟。

任何想法将非常感谢。

【问题讨论】:

    标签: c# .net ado.net datatable dataset


    【解决方案1】:

    ASP.Net Pro 杂志 2005 年 3 月号上的一项研究比较了涉及DataTablesDataViewsDataReaders 的各种方法。他们的发现是最快的方法取决于所涉及的记录数量

    对于50 条或更少的记录,迄今为止最快的搜索方法是DataTable's DataRowCollection 上的For..Next 循环。 DataRowCollection.Find 采用了这种方法。使用DataReader、使用DataView.RowFilter 重新检索数据要慢很多倍,最糟糕的是使用DataTable.Select

    对于 500 - 5,000 条记录,搜索速度最快的是 DataRowCollection.Find,紧随其后的是 DataTable.Select。迄今为止,这一系列记录中最差的是DataView.RowFilterDataView.FindRows

    对于 50,000 条记录,最快的搜索是使用 DataRowCollection.Find. 完成的,紧随其后的是使用 DataReader 重新检索记录。迄今为止,该类别最差的是DataView.RowFilterDataView.FindRows.

    【讨论】:

    • 原来问题出在 Datatable setter 方法上,对于使用大型数据表的人来说,这似乎是一个常见问题。很棒的信息。谢谢
    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2020-04-25
    • 2013-01-25
    • 1970-01-01
    相关资源
    最近更新 更多