1

レガシーデータベース(SQL Server 2000)には、次のようなクラスター化インデックスがあります。

CREATE CLUSTERED INDEX [IX_usr] ON [dbo].[usr] 
(
    [uid] ASC,
    [ssn] ASC,
    [lname] ASC
)

私の知る限り、これらのフィールドはいずれもWHERE句で一緒に使用されていません。また、それらのいずれかを一緒に使用する理由も実際にはありません。このようなクラスター化されたインデックスを持つ理由はありますか?

4

1 に答える 1

1

私が考えることができる理由の 1 つは、多くの select ステートメント (必ずしも where 句ではない) でそれらのフィールドだけを使用している場合、それがカバリング インデックスとして機能する可能性があることです。

たとえば、次のようなクエリが多数ある場合:

SELECT uid, ssn, lname FROM usr WHER uid = x

すべての必須フィールドがインデックスにあるため、クエリが実際にテーブルにヒットする必要はありません。

于 2009-05-26T14:28:58.643 に答える