1

在旧数据库 (SQL Server 2000) 中,我们有一个如下所示的聚集索引:

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

问题是,据我所知,这些字段都没有在 WHERE 子句中一起使用。也没有任何理由将它们中的任何一个一起使用。有任何理由拥有这样的聚集索引吗?

4

1 回答 1

1

我能想到的一个原因是,如果您在许多 select 语句中只使用这些字段(不一定在 where 子句中),它可以用作覆盖索引。

例如,如果您有很多这样的查询:

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

由于所有必填字段都在索引中,因此查询实际上不必命中表。

于 2009-05-26T14:28:58.643 回答