テーブルCom_Main
には、列CompanyName nvarchar(250)
が含まれています。そして、私はこの列に索引を作成計算された列インデックス
alter table Com_main
add left20_CompanyName as LEFT(CompanyName, 20) PERSISTED
:それは250
は、私は計算列CompanyName
の最初の20個の文字を保持しているleft20_CompanyName
を追加するパフォーマンスを向上させるために= 19の平均長さは、最大長さを持っています:私が使用しそう
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カラムの部分的なインデックス作成をサポートしていないと思われるので、それが答えです。 –