В настоящее время я пытаюсь заполнить базу данных SQLite десятками тысяч текстовых данных, используя этот метод:
SQLiteConnection = new SQLiteConnection(cntnStr);
connection.Open();
foreach(Page p in pages)
{
using (SQLiteCommand command = new SQLiteCommand(String.Format("Insert Into Pages (ID, Data, Name) Values ({0}, '{1}', '{2}')", id, p.Data, p.Name), connection))
command.ExecuteNonQuery();
}
Однако я подозреваю, что выполнение этого примерно 10 раз в секунду, вероятно, замедляет весь процесс. Есть ли способ, которым я могу сопоставить данные в памяти, а затем добавить каждые 5000 записей или около того в базу данных в пакетном режиме (так это быстрее)?
РЕДАКТИРОВАТЬ: Супер-важно: убедитесь, что вы выполняете все свои команды SQL в DbTransaction
- в этом случае SQLiteTransaction
:
SQLiteTransaction trans = connection.BeginTransaction();
// SQL centric code - repeated inserts/changes
trans.Commit(); // adds your changes
Улучшает производительность в 1000 раз.