3

varchar(24)列への外部キーとして使用されているCHAR(250)列があります。

MySQLでは、左端の24文字にインデックスを作成するために、column(24)を指定するインデックスを作成できたことを思い出します。これは、MSSQLServerでは不可能のようです。

私の質問はこれです:

SQL Server 2008でインデックス付きビューを使用して、その列のサブ文字列にインデックスを付けることは可能ですか?その場合、テーブルのパフォーマンスに何らかの副作用がありますか?

4

2 に答える 2

7

永続化された計算列を作成し、それにインデックスを付けることができます。計算列でのインデックスの作成を参照してください。

alter table add newcolumn as cast(oldcolumn as varchar(24)) persisted;
create index table_newcolumn on table (newcolumn);
于 2010-10-26T23:39:07.597 に答える
2

これを行うには、適切な関係上の理由があることを願っています。ベンダー提供のテーブルの最初の 24 文字は、実際には個別の属性を構成しており、そもそも別の列にあるはずだったと推測しています。

そう...

ベンダーのテーブルのビューを作成します。よろしければインデックスしてください。ビューで FK 制約を指定できるとは思えませんが、同じ効果のトリガーを作成することはできます。インデックス付きビューに対するトリガー チェックは非常に高速ですが、ビューのベース テーブルでの更新時間がわずかに増加します。

HTH。

于 2010-10-28T04:24:23.673 に答える