如何加速这个C#函数/ SQL插入?

use*_*068 4 .net c# sql sql-server

此代码序列化整数数组,然后将其插入到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();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*mić 10

我建议你把这个功能分成两部分.一个关于字节数组,另一个关于插入DB.

然后运行分析,看看你的字节数组代码是否很慢或者是否是db问题.

也许你正试图加速一些不慢的东西:)


And*_*mar 6

如果你要插入很多行,那么SqlBulkCopy这个类比调用insert很多次要快得多.有关示例,请参阅此博客文章.