У меня есть мобильное приложение. Мой клиент имеет большой набор данных ~ 100 000 записей. Он часто обновляется. При синхронизации мы должны копировать из одной базы данных в другую.
Я привязал вторую базу данных к главному и запустил insert into table select * from sync.table
.
Это очень медленно, мне кажется, это занимает около 10 минут. Я заметил, что файл журнала увеличивается шаг за шагом.
Как я могу ускорить это?
EDITED 1
У меня индексы отключены, и у меня есть журнал. Использование
insert into table select * from sync.table
он по-прежнему занимает 10 минут.
EDITED 2
Если я запустил запрос типа
select id,invitem,invid,cost from inventory where itemtype = 1
order by invitem limit 50
требуется 15-20 секунд.
Схема таблицы:
CREATE TABLE inventory
('id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
'serverid' INTEGER NOT NULL DEFAULT 0,
'itemtype' INTEGER NOT NULL DEFAULT 0,
'invitem' VARCHAR,
'instock' FLOAT NOT NULL DEFAULT 0,
'cost' FLOAT NOT NULL DEFAULT 0,
'invid' VARCHAR,
'categoryid' INTEGER DEFAULT 0,
'pdacategoryid' INTEGER DEFAULT 0,
'notes' VARCHAR,
'threshold' INTEGER NOT NULL DEFAULT 0,
'ordered' INTEGER NOT NULL DEFAULT 0,
'supplier' VARCHAR,
'markup' FLOAT NOT NULL DEFAULT 0,
'taxfree' INTEGER NOT NULL DEFAULT 0,
'dirty' INTEGER NOT NULL DEFAULT 1,
'username' VARCHAR,
'version' INTEGER NOT NULL DEFAULT 15
)
Индексы создаются как
CREATE INDEX idx_inventory_categoryid ON inventory (pdacategoryid);
CREATE INDEX idx_inventory_invitem ON inventory (invitem);
CREATE INDEX idx_inventory_itemtype ON inventory (itemtype);
Мне интересно, вставить в... select * from не самый быстрый встроенный способ сделать массивную копию данных?
EDITED 3
SQLite не имеет сервера, поэтому, пожалуйста, остановите голосование определенным ответом, потому что это не тот ответ, который я уверен.