C # .Net CF SqlCeDataAdapter DataSet Заполнение происходит медленно - PullRequest
2 голосов
/ 21 февраля 2012

У меня небольшие проблемы с производительностью базы данных в приложении Compact Framework (база данных SQLServer Compact Edition).

Что я делаю:

  1. Запрос базы данных для некоторых данных с SqlCeDataAdapter, в ответ я получаю 6 строк с данными sqlCeDataAdapter = new SqlCeDataAdapter(query, Sql_Connection);

  2. Затем я использую метод заполнения SqlCeDataAdapter, чтобы заполнить набор данных данными. sqlCeDataAdapter.Fill(resultSet);

  3. Цикл набора данных ..

Когда у меня 300 строк данных, на выполнение всей функции уходит меньше секунды, но если у меня ~ 10 000 строк данных, то это занимает около 6-7 секунд (а это слишком много в моем приложении).

В обоих случаях он возвращает одинаковые строки, но методы Fill замедляют его ...

Сначала запрашивается база данных при вызове метода заполнения или?

Могу ли я что-то с этим сделать, кроме как уменьшить количество строк?

Также, если я изменю запрос, чтобы база данных возвратила 0 строк, это все равно займет столько же времени ...

С наилучшими пожеланиями

Эдмунд

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Рекомендуется избегать использования DataSet в .NET CF, поскольку он потребляет слишком много памяти и, по сути, копирует базу данных в оперативную память. Используйте SqlCeResultSet, если вам нужно привязать данные, в противном случае просто используйте SqlCeDataReader

1 голос
/ 23 февраля 2012

Спасибо всем за помощь ...

Я нашел проблему, таблица не была проиндексирована вообще ...

Предположительно, но создатель базы данных пропустил это.

Теперь все работает очень быстро (также вместо SqlCeDataReader вместо набора данных).

Еще раз спасибо ErikEJ и ctacke ...

/ Edmund

...