当我分析相同的选择命令时:
4.0.50:
SELECT "CustomerID", "CustomerCode", "CustomerName"
FROM "dbo"."Customer"
WHERE "CustomerCode" In ('871110000','864483025')
4.0.56:
exec sp_executesql N'SELECT "CustomerID", "CustomerCode", "CustomerName"
FROM "Customer"
WHERE "CustomerCode" In (@0,@1)',N'@0 nvarchar(max) ,@1 nvarchar(max) ',@0=N'871110000',@1=N'864483025'
为什么 SS 会有这种变化?
我的客户代码是 Varchar 字段,但生成的命令是 Nvarchar 并且不使用我的索引,因此命令非常慢。
我该如何解决这个问题?
谢谢!
我找不到设置 IN 参数类型的方法,因此我们将选择核选项。
如果您仍在使用 4.0.56,则可以将以下行添加到应用程序启动中。
OrmLiteConfig.UseParameterizeSqlExpressions = false;
这将使ORMLite使用它使用参数创建SQL查询的"旧"方式(就像它在4.0.54之前所做的那样(。请注意,此属性设置为已弃用,因此,如果您升级了 ORMLite,则必须确定它是否仍然存在。