当字段整数转换为varchar时,mssql索引搜索失败

时间:2014-07-01 15:41:22

标签: sql sql-server search indexing

场景:mssql server 2008(重要:我无法修改数据库)

table name: model,  index id INTEGER(18) AND model INTEGER(18)
field id integer(18)    (i.e. 123)
field model integer(18)  (i.e. 456)
....

table name: product, index model VARCHAR(200)
field model varchar(200) (contains model.id & model.model) (i.e. 123456)
....

句子:

select top 100 p.*,m.* from p
left join MODEL m  on p.MODEL= CAST(m.cvid as varchar(18))+ CAST(m.MODEL as varchar(18)) 

执行表扫描。为什么? 我也试过CAST(m.cvid as varchar)+ CAST(m.MODEL as varchar)没有成功

添加: 我有成千上万的千米。该指数是相关的。

1 个答案:

答案 0 :(得分:0)

它会对product执行表扫描,因为您没有ORDER BY来指定订单或WHERE子句来过滤数据。

它在model上执行表扫描,因为连接条件CAST(m.cvid as varchar(18))+ CAST(m.MODEL as varchar(18))上没有索引