В моей системе вставки ~ 86000 SQLite заняли до 20 минут, значит ~ 70 вставок в секунду. Я должен делать миллионы, как я могу ускорить его? Вызов Open() и Close() объекта SQLiteConnection для каждой строки может замедлить производительность? Могут ли транзакции помочь?
Типичный метод вставки для одной строки:
public int InsertResultItem(string runTag, int topicId,
string documentNumber, int rank, double score)
{
// Apre la connessione e imposta il comando
connection.Open();
command.CommandText = "INSERT OR IGNORE INTO Result "
+ "(RunTag, TopicId, DocumentNumber, Rank, Score) " +
"VALUES (@RunTag, @TopicId, @DocumentNumber, @Rank, @Score)";
// Imposta i parametri
command.Parameters.AddWithValue("@RunTag", runTag);
command.Parameters.AddWithValue("@TopicId", topicId);
command.Parameters.AddWithValue("@DocumentNumber", documentNumber);
command.Parameters.AddWithValue("@Rank", rank);
command.Parameters.AddWithValue("@Score", score);
// Ottieni il risultato e chiudi la connessione
int retval = command.ExecuteNonQuery();
connection.Close();
return retval;
}
Как вы можете видеть, вставки очень простые.