为什么SQL过程需要3秒。在SSMS中,C#中的分钟数
问题描述:
如果我在SSMS中运行存储过程,则需要三秒钟。从C#调用相同的过程需要几分钟的时间才能返回。我怀疑更长的执行时间是返回行数的结果。一个不返回的parpameter case(在我愿意等待的时候)返回38,000行。为什么SQL过程需要3秒。在SSMS中,C#中的分钟数
如何加快返回大量行的查询?
谢谢。
这里是C#:
DataSet ds = new DataSet();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand(query, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 60000;
cmd.Parameters.Add("@Family_Code", SqlDbType.VarChar).Value = "SPCF";
SqlDataReader dr = cmd.ExecuteReader(); // takes 'forever'
dt.Load(dr);
ds.Tables.Add(dt);
答
感谢您的所有建议。 This原来是为了改善事情。查询时间减少到可接受的< 5秒。
我在主查询之前将以下几行添加到C#代码中。这个想法是设置SSMS使用的设置。
SqlCommand cmdOption1 =
new SqlCommand("SET TRANSACTION ISOLATION LEVEL READ COMMITTED", conn);
int rc = cmdOption1.ExecuteNonQuery();
提供用于返回数据的查询/存储过程。 –
我的工作地点的生产数据库中有一个非常类似的问题(原始SQL占用了1/4秒,C#花费了2-4分钟)。我与DBA一起在Internet上寻找解决方案几周后感到困扰,并且没有发现任何工作,并且我无法在我们的开发和测试数据库中重现它。最后我们重新创建了数据库,问题消失了,并且从那以后没有回来。从来没有找到根本原因。 –
您是否使用过SQL Profiler来查看它是否确实在做一些意想不到的事情? – BBauer42