какой самый быстрый способ заполнить таблицу в SQLite?

Я пишу приложение, которое создает много данных для хранения в базе данных.

Схема БД очень проста: это таблица всего с 4 столбцами, но я должен заполнить ее более чем 30000 строками.

Я использую SQLite и QSql в качестве API.

Данные создаются очень быстро (без ожидания), и я использую QSqlQuery для своевременной вставки строки. Однако кажется, что для хранения 100 строк требуется 7-8 секунд (я использую QTime для подсчета времени).

Я пытался использовать QSqlTableModel, но не заметил повышения производительности, даже вызывая QSqlTableModel::submitAll каждые 1000 строк (QTime показывает 70-80 секунд для 1000 строк).

Есть ли способ хранить строки быстрее? Каков самый быстрый способ заполнить таблицу с помощью SQLite?


person Emiliano    schedule 09.05.2011    source источник


Ответы (2)


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

Также имейте в виду, что SQLite в любом случае более оптимизирован для чтения.

person Donal Fellows    schedule 09.05.2011
comment
Мне пришлось использовать COMMIT вместо END, но это сработало: действительно, это была проблема, связанная с транзакцией. - person Emiliano; 09.05.2011

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

person Tom    schedule 19.06.2014