ADO.NET参数导致超时

本文关键字:超时 参数 NET ADO | 更新日期: 2023-09-27 18:22:19

我有一个从C#通过ADO.NET运行的大数据透视查询。我在两个地方使用它,在一个地方我想要数据,但在另一个地方,我只想要结构(没有数据)。因此,在查询中,我添加了where子句:

1 = @test

因此,在我只想要表结构的查询中,我将@test设置为2,这非常有效。然而,在查询中,我想要数据,我将其设置为1,但该查询会超时(5分钟后)。如果我将sql拉入sql服务器并手动设置参数,它将在3分钟内返回。如果我从我的C#应用程序中完全删除1 = @test,它会在3分钟内返回。如果我在C#应用程序中对1 = 1进行硬编码,它会在3分钟后返回。

我还在这个查询中添加了一个日期参数,效果很好。

我的问题是,@test参数到底是什么导致了超时

有没有一种方法可以查看ADO.NET为我的查询真正发送到SQL Server的内容?

ADO.NET参数导致超时

简单的答案是,当您只需要做一个结构时,修改实际的查询,使其包含您的1=@测试。这样,将创建两个独立的查询计划,每种类型的查询一个,这两个计划都将针对实际需要执行的查询进行优化