从代码执行时,存储过程慢了10多倍

时间:2018-05-30 14:59:20

标签: c# sql-server entity-framework stored-procedures

我有一个存储过程接受1个ID作为参数,然后执行一些操作:

  • 创建/删除临时表
  • 使用中间结果填充一些临时表
  • 在表格上插入最终结果

如果我使用EXEC从SQL Server Management Studio运行它,每次只需不到2分钟。

  • 如果我使用Entity Framework从代码运行它,有时需要6分钟,有时需要32分钟。真是不可靠和不可预测。
  • 我尝试将其作为原始sql查询(context.Database.ExecuteSqlCommand)运行,没有任何区别。
  • 我尝试使用SqlCommand.ExecuteNonQuery在Entity Framework之外运行它,没有任何区别。

有没有其他方法可以从代码中可靠地运行存储过程?

更新:如在另一个问题Stored procedure slow when called from web, fast from Management Studio

中提到的那样

现在可以使用:清除缓存DBCC DROPCLEANBUFFERS和DBCC FREEPROCCACHE。 但是在生产环境中这样做并不总是一种选择。所以我仍在寻找解决方案,因此根本不会在生产环境中发生这种情况。

0 个答案:

没有答案