Производительность SQL Server CE на устройстве - PullRequest
0 голосов
/ 05 января 2010

Моя база данных SQL Compact очень проста: всего три таблицы и один индекс для одной из таблиц (таблица с 200 тыс. Строк; в двух других - менее ста).

При первом использовании файла .sdf моим приложением Compact Framework на целевом устройстве Windows Mobile система зависает более минуты, пока «что-то» делается с базой данных: при развертывании размер базы данных составляет 17 мегабайт и после этого первого использования, он раздувается до 24 мегабайт.

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

На данный момент я скопировал «инициализированную» базу данных обратно на рабочий стол для использования в проекте установки, но я действительно хотел бы получить лучший ответ / решение. Я пробовал "полное сжатие / восстановление" в диалоге свойств базы данных VS, но это не имело никакого значения. Есть идеи?

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

Ответы [ 2 ]

1 голос
/ 05 января 2010

Да, он воссоздает ваши индексы, потому что база данных была создана или открыта на настольном компьютере. Скопируйте проиндексированную базу данных с устройства и в настройки.

подробнее здесь: http://blogs.msdn.com/sqlservercompact/archive/2009/04/01/after-moving-the-database-from-one-platform-to-other-the-first-sqlceconnection-open-takes-more-time.aspx

0 голосов
/ 05 января 2010

Поскольку база данных доступна только для чтения, и если «инициализированная» база данных больше не надувается, я бы просто включил ее в настройку. Просто подтверждение того, что ваш подход имеет смысл.

...