我有这个内联参数化查询,它最近开始计时。
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' ")
问题只发生在特定的表上,其余的参数化查询工作正常。非常感谢任何帮助。
答案 0 :(得分:1)
数据库中的数据类型为nchar / nvarchar吗?如果db上的数据类型是varchar并且提供的参数声明为nvarchar(反之亦然),则SQL Server通常不会使用索引。检查sql profiler中生成的内容以确保。