Этот код сериализует массив целых чисел, а затем вставляет его в таблицу 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();
}
}
}
Вы пытались обернуть BinaryWriter вокруг MemoryStream, а не использовать BitConverter? Кроме того, поскольку вы конвертируете его в массив в конце, зачем использовать Stream, а не массив? Вы уже знаете размер (items.Count * 4) –
Является ли sqlConnection частной переменной? – rsbarro
Да, sqlConnection является переменной prvate. – user404068