小编Mik*_*sny的帖子

计算列索引

我有一个Com_Main包含列的表CompanyName nvarchar(250).它的平均长度为19,最大长度为250.

为了提高性能,我想添加一个计算列left20_CompanyName,它保存前20个字符CompanyName:

alter table Com_main 
add left20_CompanyName as LEFT(CompanyName, 20) PERSISTED
Run Code Online (Sandbox Code Playgroud)

然后我在这个专栏上创建索引:

create index ix_com_main_left20CompanyName 
on Com_main (LEFT20_CompanyName)
Run Code Online (Sandbox Code Playgroud)

所以我用的时候

select CompanyName from Com_Main
where LEFT20_CompanyName LIKE '122%'
Run Code Online (Sandbox Code Playgroud)

它使用这个非聚集索引,但当查询如下:

select CompanyName from Com_Main 
where CompanyName LIKE '122%'
Run Code Online (Sandbox Code Playgroud)

它使用全表扫描,不使用此索引.

所以问题是:

是否有可能使SQL Server在上一次查询中的可计算列上使用此索引?

performance sql-server-2005 calculated-columns

5
推荐指数
1
解决办法
202
查看次数