当没有一个字段一起使用时,为什么你会有一个聚簇复合索引?

时间:2009-05-26 14:21:24

标签: indexing sql-server-2000 clustered-index composite-index

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

由于所有必填字段都在索引中,查询实际上永远不必点击表。