Проблемы с огромной загрузкой процессора - PullRequest
1 голос
/ 23 июля 2010

Я пишу приложение на vb.net 2005. Приложение считывает электронную таблицу в DataSet с помощью ADO.NET и использует столбец этой таблицы для заполнения ListBox.При выборе элемента ListBox пользователю будет представлена ​​подробная информация о выбранной записи.

Одна часть этой информации отсутствует в наборе данных.Я должен сравнить столбец из электронной таблицы с несколькими внешними источниками данных, чтобы определить природу рассматриваемой записи.Вот где у меня проблема.

Это сравнение должно выполнить поиск по 9,5-метровым строкам в таблице SQL за один этап.Я проверил, и нет никакого способа «сжать» запрос, поскольку я уже только ищу абсолютно важные данные.

В результате приложение никогда ничего не делает видимым образом.Загрузка ЦП возрастает до 100% независимо от того, что было ранее, и производительность системы становится почти невыносимо низкой.

Кто-нибудь может предложить способ улучшить эту ситуацию во время выполнения этого массивного запроса?

РЕДАКТИРОВАТЬ: Первоначально я собирался записать содержимое 9,5-метровых строк в таблице базы данных в текстовый файл, из которого я затем прочитал, но после 6,5-метровых строк я получил исключение OutOfMemoryException.

Ответы [ 2 ]

3 голосов
/ 23 июля 2010

Я подозреваю, что ваш процессор может использоваться для заполнения DataSet, хотя вам придется профилировать свое приложение, чтобы подтвердить это. Попробуйте вместо этого использовать DataReader и либо сохранить результаты в каком-то более компактном формате в памяти, либо, если вам не хватает памяти, записать их в файл по мере необходимости. При использовании подхода DataReader вам никогда не нужно одновременно сохранять весь набор результатов в памяти.

0 голосов
/ 23 июля 2010
  1. Индекс в столбце для поиска?
  2. Новое поле в таблице для ускорения поиска?
...