当没有一起使用任何字段时,为什么要使用聚集复合索引?
在遗留数据库(SQL Server 2000)中,我们有一个如下所示的聚集索引:
CREATE CLUSTERED INDEX [IX_usr] ON [dbo].[usr]
(
[uid] ASC,
[ssn] ASC,
[lname] ASC
)
事实是,据我所知,这些字段都没有在 WHERE 子句中一起使用。 也没有任何理由将它们一起使用。 有什么理由需要这样的聚集索引吗?
In a legacy database (SQL Server 2000), we have a clustered index that looks like this:
CREATE CLUSTERED INDEX [IX_usr] ON [dbo].[usr]
(
[uid] ASC,
[ssn] ASC,
[lname] ASC
)
The thing is, as far as I know none of these fields are used together in a WHERE clause. Nor is there really any reason to use any of them together. Is there any reason to have a clustered index like this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我能想到的一个原因是,如果您在许多 select 语句中仅使用这些字段(不一定在 where 子句中),那么它可以充当覆盖索引。
例如,如果您有很多这样的查询:
该查询实际上永远不需要访问表,因为所有必需的字段都在索引中。
One reason I could think of is if you are using just those fields in many select statements (not necessarily in the where clause), it could serve as a covering index.
For example, if you have lots of queries like this:
The query would never actually have to hit the table as all required fields are in the index.