Какой самый быстрый способ заполнить таблицу в SQLite? - PullRequest
1 голос
/ 09 мая 2011

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 19 июня 2014

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

1 голос
/ 09 мая 2011

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

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

...