このコードは、整数の配列をシリアル化し、それをSQLテーブルに挿入します。それは私が必要とするほど速くはありません。私はもっと効率的に何かをすることができますか?このC#関数/ SQL挿入を高速化するにはどうすればよいですか?
ありがとうございます!私がしようとするだろう
public void SetItem(long Id, int[] items)
{
using (MemoryStream stream = new MemoryStream())
{
foreach (int d in items)
{
var bin = BitConverter.GetBytes(d); //Serialize
stream.Write(bin, 0, bin.Length);
}
var array = stream.ToArray();
using (SqlCommand cmd = new SqlCommand("INSERT INTO Items(Id, Item, DateCreated) VALUES (@Id, @binaryValue, @dateCreated)", sqlConnection))
{
cmd.Parameters.Add("@binaryValue", SqlDbType.VarBinary, array.Length).Value = array;
cmd.Parameters.Add("@Id", SqlDbType.BigInt).Value = Id;
cmd.Parameters.Add("@dateCreated", SqlDbType.DateTime2).Value = DateTime.Now;
cmd.ExecuteNonQuery();
}
}
}
BitStreamを使用するのではなく、MemoryStreamの周りにBinaryWriterをラップしてみましたか?また、最後に配列に変換するので、配列ではなくStreamを使用するのはなぜですか?あなたは既にサイズ(items.Count * 4)を知っています –
sqlConnectionはプライベート変数ですか? – rsbarro
はい、sqlConnectionはprvate変数です。 – user404068