gpt4 book ai didi

c# - 存储过程不是那么快吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:43 25 4
gpt4 key购买 nike

嘿嘿。

我只是想通过使用存储过程来提高我的应用程序(.NET 3.5、C#)的性能。

所以我写了一个小测试应用程序,看看与普通查询相比,这些应用程序的速度有多快,如下所示:

    private static long _StartStored;
private static long _EndStored;
private static long _StartNormal;
private static long _EndNormal;
private static TimeSpan _StoredTime;
private static TimeSpan _NormalTime;
private static string[] _Stored = new string[102000];
private static string[] _Normal = new string[102000];
static void Main(string[] args)
{
Console.WriteLine("Querying 2000 normal queries");
_SQLConnection = new SqlConnection(/*my_connection*/);
_SQLConnection.Open();
_StartNormal = DateTime.Now.Ticks;
for (int i = 100000; i <= 102000; i++)
{
DataTable _ResultDataTable = new DataTable();
SqlDataAdapter _SQLAdapter = new SqlDataAdapter(/*my_query*/, _SQLConnection);
_SQLAdapter.Fill(_ResultDataTable);
if (_ResultDataTable.Rows.Count > 0)
_Normal[i] = _ResultDataTable.Rows[0]["row"].ToString();
}
_EndNormal = DateTime.Now.Ticks;
_NormalTime = TimeSpan.FromTicks(_EndNormal - _StartNormal);
Console.WriteLine("Total execution time: " + _NormalTime.ToString());
//-----------------------------------------------------------------------------
Console.WriteLine("Querying 2000 stored procedures");
_StartStored = DateTime.Now.Ticks;
SqlCommand _Cmd = new SqlCommand(/*my_sp*/, _SQLConnection);
_Cmd.CommandType = CommandType.StoredProcedure;
SqlParameter _Param = new SqlParameter("@param1", 0);
_Cmd.Parameters.Add(_Param);
for (int i = 100000; i <= 102000; i++)
{
_Cmd.Parameters["@param1"].Value = i;
SqlDataReader _Reader = _Cmd.ExecuteReader();
while (_Reader.Read())
{
_Stored[i] = _Reader["StartWork"].ToString();
}
_Reader.Close();
}
_EndStored = DateTime.Now.Ticks;
_StoredTime = TimeSpan.FromTicks(_EndStored - _StartStored);
Console.WriteLine("Total execution time: " + _StoredTime.ToString());

我很想缩短该代码,但是...行不通 :D

TL;DR - 同一查询的 2000 个存储过程只快了大约 4 秒,这对我来说似乎很低?

我是否使用了错误的存储过程?

最佳答案

大部分开销将用于设置存储过程调用和检索结果——在您的示例中完成了 2,000 次。

您可能需要考虑将循环移动到存储过程中,然后调用一次存储过程并一次性获得所有结果。

关于c# - 存储过程不是那么快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1796890/

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