我有一个非常讨厌的数据透视查询,我通过ADO.NET从C#运行。我在2个地方和1个地方使用它我想要数据但在另一个地方我只想要结构(没有数据)。所以在我在where子句中添加的查询中:
1 = @test
因此,在我只想要表格结构的查询中,我将@test
设置为2并且效果很好。但是,在查询中我想要数据我将其设置为1,但该查询超时(5分钟后)。如果我将sql拉入sql server并手动设置参数,它将在3分钟后返回。如果我从我的C#应用程序中完全删除1 = @test
,它会在3分钟内恢复正常。如果我在我的C#应用程序中硬编码1 = 1
,它会在3分钟内恢复正常。
我还在此查询中添加了一个日期参数,并且运行正常。
我的问题是,世界上关于@test参数的内容可能导致超时发生?
有没有办法看到ADO.NET真正发送到SQL Server的查询?
答案 0 :(得分:1)
简单的答案是当你只需要做一个结构时修改实际的查询,使它包含你的1 = @test。这样,将创建两个单独的查询计划,每个查询计划类型一个,这两个查询计划都将针对它实际需要执行的查询进行最佳优化。