Обновление ячеек в таблице данных в памяти - PullRequest
1 голос
/ 28 декабря 2010

Хорошо, история до сих пор в том, что у меня есть данные, около 10000 строк или около того.и около 150 столбцов в строке.более или менее 150.000 клеток в этой таблице данных.у меня все обновления работают нормально, но обновление идет медленно.Мне нужно перебрать список частей, а затем обновить ячейки в таблице в зависимости от процедуры.когда я полностью закончу обновление, 75% - 80% всех ячеек будут изменены.Я использую поиск по таблице с использованием индекса первичного ключа, присвоенного значению INT.

datatable.rows.find () выглядит немного быстрее datatable.select (expression) почти такая же, но небольшая разница.

Есть ли идеи, которые могут ускорить это.После замены 80000 - 120000 ячеек это может занять несколько минут.

anyideas было бы здорово, спасибо.

1 Ответ

4 голосов
/ 29 декабря 2010

В исследовании, опубликованном в марте 2005 года в журнале ASP.Net Pro, сравнивались различные подходы, включающие DataTables, DataViews и DataReaders.Они пришли к выводу, что самый быстрый подход зависел от количества задействованных записей .

Для 50 записей или менее , безусловно, самый быстрый метод поиска был For..Nextцикл на DataTable's DataRowCollection.За этим подходом последовал DataRowCollection.Find.Во много раз медленнее повторное извлечение данных с DataReader, с использованием DataView.RowFilter, и хуже всего с DataTable.Select.

Для 500 - 5000 записей , самый быстрый поискбыл с DataRowCollection.Find, за которым следовал DataTable.Select.Наихудшим на данный момент для этого диапазона записей были DataView.RowFilter и DataView.FindRows.

. Для 50 000 записей , самый быстрый поиск был достигнут с DataRowCollection.Find..восстановление записей с DataReader.Худшими для этой категории на сегодняшний день были DataView.RowFilter и DataView.FindRows.

...