场景: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)没有成功
添加: 我有成千上万的千米。该指数是相关的。
答案 0 :(得分:0)
它会对product
执行表扫描,因为您没有ORDER BY
来指定订单或WHERE
子句来过滤数据。
它在model
上执行表扫描,因为连接条件CAST(m.cvid as varchar(18))+ CAST(m.MODEL as varchar(18))
上没有索引