首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于查询性能的有关问题

2013-12-04 
关于查询性能的问题有个Custoemer表,CustomerID为Int类型,如果查询语句为 Where CustomerID1 和 Where Cu

关于查询性能的问题
有个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'

所以,当数据量大的时候,会导致性能问题 

热点排行