1
我有2个样本,有效地做同样的事情 - 示例1:SQL中的隐式数据类型转换是否会影响性能?
command.Parameters.Add(ParamFoo, SqlDbType.Int)
command.Parameters(ParamFoo).Value = fooVal
示例2:
哪个样品将被推荐?我知道第二个样本正在进行一些转换。不是最好的,不要求转换和第一个样品?
我有2个样本,有效地做同样的事情 - 示例1:SQL中的隐式数据类型转换是否会影响性能?
command.Parameters.Add(ParamFoo, SqlDbType.Int)
command.Parameters(ParamFoo).Value = fooVal
示例2:
哪个样品将被推荐?我知道第二个样本正在进行一些转换。不是最好的,不要求转换和第一个样品?
当你发布你的代码,是完全不相关的。两种变体的性能都相同,因此您无法在数据库调用的巨大背景下测量客户端内转换的成本。
但是,当barVal是String类型时,存在一个非常大的已知问题。 SqlClient会将参数添加为NVARCHAR类型,并且在SQL表达式中用于与VARCHAR列比较时,SQL type precedence rules将要求将列转换为NVARCHAR,而不是要转换为VARCHAR的变量,并且这会更改索引寻求表格扫描,并带来灾难性的后果。
+1用于关于类型优先规则对(N)VARCHAR – Lucero 2010-05-19 22:11:27
影响的警告和解释+1:欣赏警告。正式指出。 – IAbstract 2010-05-19 23:26:35
我想,如果我正确地阅读这个,对于'String'数据类型,我应该选择两行样本(#1)。 – IAbstract 2010-05-20 00:41:43