В моей системе ~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;
}
В моей системе ~86000 вставок SQLite заняли до 20 минут, что означает ~70 вставок в секунду. Мне нужно сделать миллионы, как мне это ускорить? Вызов Open() и Close() для объекта SQLiteConnection для каждой строки может снизить производительность? Могут ли помочь транзакции? Типичный метод вставки одной строки: [code]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)";