当没有一起使用任何字段时,为什么要使用聚集复合索引?

发布于 2024-07-22 05:21:22 字数 249 浏览 8 评论 0原文

在遗留数据库(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷荒 2024-07-29 05:21:22

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

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

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

该查询实际上永远不需要访问表,因为所有必需的字段都在索引中。

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:

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

The query would never actually have to hit the table as all required fields are in the index.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文