gpt4 book ai didi

c# - 在循环中调用 sqlCommand 增加每一步的执行时间

转载 作者:行者123 更新时间:2023-11-30 12:53:00 26 4
gpt4 key购买 nike

我有一个循环,它在一个循环中执行存储过程,迭代次数超过 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]:“开始 0 毫秒”[1]: "1000 次完成 578.125ms"

[2]:“1000 次完成 921.875 毫秒”

[3]:“1000 次完成 1328.125 毫秒”

[4]:“1000 次完成 1734.375 毫秒”

[5]:“1000 次完成 1140.625 毫秒”

[6]:“1000 次完成 1250 毫秒”

[7]:“1000 次完成 1703.125 毫秒”

[8]:“1000 次完成 1718.75 毫秒”

……

[31]:“1000 次完成 3234.375 毫秒”

[32]:“1000 次完成 3390.625 毫秒”

[33]:“1000 次完成 3453.125 毫秒”

[34]:“1000 次完成 3609.375 毫秒”

[35]:“1000 次完成 3765.625 毫秒”

[36]:“1000 次完成 3796.875 毫秒”

[37]:“1000 次完成 3968.75 毫秒”

[38]:“1000 次完成 4093.75 毫秒”

[39]:“1000 次完成 4203.125 毫秒”

[40]:“1000 次完成 4546.875 毫秒”

[41]:“1000 次完成 4406.25 毫秒”

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

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

非常感谢

最佳答案

你的存储过程中是否有任何特殊的逻辑,或者你只是插入到一个表中。

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

关于c# - 在循环中调用 sqlCommand 增加每一步的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com