加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在循环中调用sqlCommand,每步增加执行时间

发布时间:2020-12-15 21:08:35 所属栏目:百科 来源:网络整理
导读:我有一个循环,在循环中执行存储过程超过40,000次迭代,如下所示: SqlCommand command = new SqlCommand("WriteDataToDB"); command.Connection = _connection; command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@SignalID",SqlD
我有一个循环,在循环中执行存储过程超过40,000次迭代,如下所示:

SqlCommand command = new SqlCommand("WriteDataToDB");
        command.Connection = _connection;
        command.CommandType = CommandType.StoredProcedure;

        command.Parameters.Add("@SignalID",SqlDbType.Int).Value = Arg_Signal.SignalID;
        command.Parameters.Add("@SignalStrength",SqlDbType.Float).Value = Arg_Signal.SignalSiggestion;
        command.Parameters.Add("@Time",SqlDbType.BigInt).Value = Arg_Signal.TimeWasHit;
        command.Parameters.Add("@Value",SqlDbType.Float).Value = Arg_Signal.ValueWasHit;

        if (command.Connection.State != ConnectionState.Open)
        {
            command.Connection.Open();
        }
        command.ExecuteNonQuery();

这个代码是从一个循环中调用的,我每隔1000次迭代就会截取一次.我得到的时间如下:

[0]:“开始0ms”
[1]:“1000完成578.125ms”

[2]:“1000完成了921.875ms”

[3]:“1000完成1328.125ms”

[4]:“1000完成1734.375ms”

[5]:“1000完成1140.625ms”

[6]:“1000完成1250ms”

[7]:“1000完成1703.125ms”

[8]:“1000完成1718.75ms”

……

[31]:“1000完成3234.375ms”

[32]:“1000完成3390.625ms”

[33]:“1000完成3453.125ms”

[34]:“1000完成3609.375ms”

[35]:“1000完成3765.625ms”

[36]:“1000完成3796.875ms”

[37]:“1000完成3968.75ms”

[38]:“1000完成4093.75ms”

[39]:“1000完成4203.125ms”

[40]:“1000完成4546.875ms”

[41]:“1000完成4406.25ms”

[42]:“停止总计101093.75ms 1515.625ms”

有谁知道为什么这些执行时间在增加?我需要运行这个代码超过一百万次迭代 – 按照它的速度执行一次迭代需要一分钟……

非常感谢

解决方法

您的存储过程中是否有任何特殊逻辑,或者您只是插入表中.

如果没有特殊逻辑或者您可以在.NET中执行该逻辑,那么请查看执行Bulk Insert.您可以通过使用System.Data.SqlClient.SqlBulkCopy类来完成此操作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读