2016-04-27 8 views
0

私は最近、日常的にsqliteの20000レコードを追加または更新できるプログラムをコーディングしています。 Stopwatchを使用すると、すべてのレコードが約40分でsqliteに追加されることに気付きました。道によるsqliteのデータセットを使用

は、このレコードを追加するためのコードです:

string q = "INSERT INTO " + title + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
        SQLiteCommand cmd = new SQLiteCommand(q, Assist.con_database); 

        cmd.Parameters.AddWithValue("@**", null); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 

        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 

        Assist.con_database.Open(); 
        cmd.ExecuteNonQuery(); 
        Assist.con_database.Close(); 

どのように私は時間を短縮し、sqliteのに追加の速度を上げることができますか?

+0

は、セッション内の1つの 'INSERT'(オープン/クローズ)以上のことを行うことができトランザクションの独立

  • 閉じる接続をコミットし、多分単一のクエリにいくつかの' INSERT'sを組み合わせますか? –

  • 答えて

    0

    パラメータを1回だけ追加する必要があります。次に、各挿入時に、既存のパラメータに値を割り当て、ExcecuteNonQueryを呼び出します。

    トランザクションを使用すると、パフォーマンスも向上します。

    だからあなたのフローがより次のようになります。

    1. を開き、接続
    2. 、コマンドを作成し
    3. トランザクションを開始しますコマンドテキストを設定し、パラメータを作成します。
    4. 挿入/更新ごとに、パラメータに値を割り当て、ExcecuteNonQueryを呼び出します。
    関連する問題