关于查询性能的问题
有个Custoemer表,CustomerID为Int类型,如果查询语句为 Where CustomerID=1 和 Where CustomerID='1'和 Where CustomerID=N'1' 。这三种写法性能一样吗?环境是SQL2008R2。
[解决办法]
不一样,会有类型隐式转换,通常会引起无法使用索引,最好使用和数据列相同类型的查询参数
[解决办法]
当然不一样,而且影响会很大
尤其是变量的优先级比字段的低的时候。
严格控制两边的类型要一致
[解决办法]
采用第1种把。
Where CustomerID=1 和 Where CustomerID='1'和 Where CustomerID=N'1'
第2、3种,都是字符串,而你的CustomerID是int型,所以在查询时会导致隐式数据类型转化,表面上看上去,好像也没什么问题。
但如果你给customerID字段上,建立了索引,那么第2、3种的方式,就会导致用不上索引,因为,数据类型不同,隐式转化了,相当于这样:
where cast(CustomerID as varchar) = '1'
where cast(CustomerID as varchar) = N'1'
所以,当数据量大的时候,会导致性能问题