SQLite .NET performance, how to speed up things?

后端 未结 2 2072
一生所求
一生所求 2020-11-29 03:26

On my system, ~86000 SQLite insertions took up to 20 minutes, means ~70 insertions per second. I have to do millions, how can I speed up it? Calling Open() and Close() on SQ

2条回答
  •  天命终不由人
    2020-11-29 04:25

    Use transactions. This should make things faster. Also I would recommend you the following pattern:

    public int InsertResultItem(string runTag, int topicId,
        string documentNumber, int rank, double score)
    {
        // Apre la connessione e imposta il comando
        using (var connection = new SQLiteConnection(SomeConnectionString))
        using (var command = new connection.CreateCommand())
        {
            connection.Open();
            using (var tx = connection.BeginTransaction())
            {
                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
                var retval = command.ExecuteNonQuery();
                tx.Commit();
                return retval;
            }
        }
    }
    

提交回复
热议问题