Производительность SQLite .NET, как ускорить работу?

В моей системе ~ 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;
    }

Как видите, вставки очень простые.

16
задан gremo 4 December 2010 в 23:13
поделиться