Bre*_*ker 8 sql t-sql sql-server llblgenpro
我们正在使用一个ORM来执行从.NET到SQL Server的sp_executesql存储过程的调用.
当从.NET调用存储过程时,我们会收到超时异常.
看看Profiler,我可以看到查询确实需要很长时间才能执行.
查询基本上是:
exec sp_executesql N'SELECT DISTINCT
FROM [OurDatabase].[dbo].[Contract] [LPLA_1] ) [LPA_L1]
LEFT JOIN [OurDatabase].[dbo].[Customer] [LPA_L2] ON [LPA_L2].[Customer_ID]=[LPA_L1].[CustomerId] AND [LPA_L2].[Data]=[LPA_L1].[Data])
WHERE ( ( ( ( ( [LPA_L1].[DealerId] = @DealerId1))
AND ( [LPA_L2].[Last_Name] = @LastName2))))',N'@DealerId1 varchar(18),@LastName2 varchar(25)',@DealerId1='1234',@LastName2='SMITH'
Run Code Online (Sandbox Code Playgroud)
对我来说令人困惑的部分是这样的:如果我将超时的查询复制并粘贴到SQL Management Studio并以交互方式执行它,它就会执行得很好.
有谁知道为什么通过.NET代码执行相同的查询会花费更长的时间?(我能够重现这一点 - 从代码执行的查询一直超时,并且以交互方式执行的查询始终正常工作.)
任何帮助表示赞赏.谢谢!
DealerId 或 Lastname 是 nvarchar(与 varchar 参数的类型不同)吗?
这可能会导致整个索引的转换。如果您发现这种情况,请发表评论,我会更详细地解释。
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |