C#和SQL Server Management Studio中SQL查询的执行时间差异很大

我有一个简单的SQL查询,从C#运行时需要超过30秒,然后每次超时,而在SQL Server Management Studio上运行时立即成功完成。 在后一种情况下,查询执行计划不会显示任何麻烦,并且通过一些简单的操作可以很好地传播执行时间。

我在查询从C#运行时运行’ EXEC sp_who2 ‘,它被列为占用29,000毫秒的CPU时间,并且没有被任何东西阻止。

我不知道如何开始解决这个问题。 有没有人有一些见解?

查询是:

 SELECT c.lngId, ... FROM tblCase c INNER JOIN tblCaseStatus s ON s.lngId = c.lngId INNER JOIN tblCaseStatusType t ON t.lngId = s.lngId INNER JOIN [Another Database]..tblCompany cm ON cm.lngId = cs.lngCompanyId WHERE t.lngId = 25 AND c.IsDeleted = 0 AND s.lngStatus = 1 

首先,从C#运行时提取查询的查询计划:

 select p.query_plan, * from sys.dm_exec_requests r cross apply sys.dm_exec_query_plan(r.plan_handle) p where r.session_id =  

然后将其与在SSMS会话下执行的计划进行比较(只需单击工具栏中的显示实际计划)。

并且,作为一般规则,总是尝试应用有条理的方法而不是猜测。 Wait and Queues是一种非常好的,经过validation的SQL Server性能故障排除方法。