0

Я использую мобильное устройство Motorola MC-2180 с Windows Embedded CE 6.0 + SQL Server Compact 3.5. Базы данных находятся на карте памяти Kingston 8 GB 10 класса.Windows CE 6.0 + SQL Server Compact 3.5 = медленный доступ к данным

Задача: База данных содержит 1000000 строк и один индекс кластера и один некластерный индекс. Когда я впервые использую запрос к базе данных (запрос используется индекс) - запрос выполняется очень медленно (~ 120 мин).

Можно ускорить или упорядочить данные, чтобы время выполнения запроса было быстрым (~ 5 секунд)?

Подводное изображение: Мы хотим сделать инвентарь запасным для этого устройства, используя его собственные продукты базы данных. Доступ к сети - нет.

Спасибо!

+0

Здравствуйте, Максим, добро пожаловать в StackOverflow! что ты уже испробовал? можем ли мы увидеть некоторые данные кода и примера? это трудно оптимизировать базу данных и/или запрос, если вы не знаете, что именно он делает –

+0

Создана ли ваша база данных из настольной системы? Что вы подразумеваете под «первым разом»? – ErikEJ

+0

База данных представляет собой простую таблицу с полями (IdRow int не null, IdBarcode int не равно null, имя char (100) не равно null). Clustery индекс IdRow и некластеризованный индекс на IdBarcode. Таблица имеет 1000000 записей. Когда вы впервые получаете доступ к таблице (выберите * from myTable, где IdBarcode = 123) с мобильного устройства, чтобы кэшировать индекс, и это очень длительное время (от 2 часов). Эта ситуация неприемлема.Как ускорить кеширование индекса? –

ответ

0

Устройство, которое вы используете, не имеет очень хорошей конфигурации оборудования (оно имеет только от 128 до 256 МБ ОЗУ). Лучше бы использовать что-то вроде MC45 или MC3100 Series. В любом случае, возможно, вам захочется попытаться переместить файл .sdf в память ROM устройства, это может ускорить ваше время, но забудьте сделать это 5 секунд.

Когда-либо думал, что .sdf ДОЛЖЕН иметь все эти 1Mi строки. Не могли бы вы отделить данные?

Если вы хотите обменяться знаниями, я с удовольствием передам свой опыт!

+0

На данный момент ситуация описана в моем ответе на вопрос. –

0

К сожалению, заказчик не планирует в ближайшем будущем приобретать более эффективные устройства.

Память устройства ограничена. Размер базы данных около 2 ГБ и каждый год увеличится примерно на 500 МБ. Поэтому было решено расположить базу данных на microSD (класс 10).

На сегодняшний день вы размещаете попробовать следующий алгоритм:

  1. Все таблицы выше строк 1000000 разделены на таблицу с количеством строк не более 500000.

  2. реализованным в программном обеспечении из Кэш функции мобильного устройства (один запрос для каждой таблицы в базе данных). Это занимает много времени, но требуется только один раз и после быстрого доступа к данным кеша.

  3. Синхронизация с удаленной базой данных (для добавления новой информации в базу данных мобильного устройства) выполняется с использованием мобильного устройства. В этом случае кэширование не требуется - база данных обновляется непосредственно на устройстве.

Смежные вопросы