我有一個表Com_Main
它包含列CompanyName nvarchar(250)
。它有19個平均長度,最大長度= 250計算列索引
爲了提高性能,我想添加一個計算列left20_CompanyName
持有的CompanyName
前20個字符:
alter table Com_main
add left20_CompanyName as LEFT(CompanyName, 20) PERSISTED
然後,我在這列上創建索引:
create index ix_com_main_left20CompanyName
on Com_main (LEFT20_CompanyName)
所以,當我使用
select CompanyName from Com_Main
where LEFT20_CompanyName LIKE '122%'
它使用此非聚集索引,但查詢的時候是這樣的:
select CompanyName from Com_Main
where CompanyName LIKE '122%'
它使用全表掃描,並且不使用此索引。
所以問題:
是否有可能使SQL Server使用上可計算列該指數上次查詢?
是的,我認爲你是對的,但主要目標是檢查是否可以使用計算列作爲索引。畢竟,我當然在CompanyName列上創建了一個索引。我似乎MS SQL不支持varchar列的部分索引,所以這就是答案。 –