内联参数化查询定时

时间:2014-11-25 22:04:44

标签: c# sql .net sql-server vb.net

我有这个内联参数化查询,它最近开始计时。

Dim dal As New DalMain()

Dim sbSql As New StringBuilder()
sbSql.Append(" select column1, column2 ")
sbSql.Append(" from table ")
sbSql.Append(" where column3 = @Value ")

dal.AddSqlParms("@Value", DalMain.SqlParmType.STR, "100")

其中DalMain是数据访问类,DalMain.SqlParmType.STR是DbType.String类型。这个查询在过去的5年中运行正常,但是当我运行它时,我正在抽出时间。

在sql management studio中运行相同的查询。如果我硬编码如下所示的值,那么它运行正常,没有超时。

sbSql.Append(" select column1, column2 ")
sbSql.Append(" from table ")
sbSql.Append(" where column3 = '100' ")

问题只发生在特定的表上,其余的参数化查询工作正常。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

数据库中的数据类型为nchar / nvarchar吗?如果db上的数据类型是varchar并且提供的参数声明为nvarchar(反之亦然),则SQL Server通常不会使用索引。检查sql profiler中生成的内容以确保。