gpt4 book ai didi

sql-server - 聚集索引与覆盖索引

转载 作者:行者123 更新时间:2023-12-02 22:22:55 26 4
gpt4 key购买 nike

考虑 SQL Server 2008 中的下表:

LanguageCode  varchar(10)
Language nvarchar(50)

LanguageCode 参与关系,因此我无法创建包含两列(LanguageCode、Language)的主键索引。

如果我在LanguageCode上放置一个主聚集键,我当然不能将Language包含在索引中(覆盖索引)。这意味着我必须为 Language 创建第二个索引,否则会面临其中存在重复项的风险(加上强制表扫描来检索其值)。

此外,MS 的文档(以及该主题的专家)表明表理想应该具有聚集索引。

在这种情况下,非聚集覆盖索引(LanguageCode,Language)不仅可以确保Language是唯一的,而且可以避免表扫描。但是,不会有“理想的”聚集索引。

这是没有聚集索引实际上是理想的情况之一吗?

根据反馈进行编辑:

我希望运行的唯一查询是:

SELECT Language, LanguageCode FROM Languages where Language="EN"

最佳答案

根据定义,聚集索引涵盖所有列。

如果您在 LanguageCode 上创建一个 PRIMARY KEY CLUSTERED 并在 Language 上创建一个 UNIQUE INDEX,它将允许您可以通过一次查找通过代码和名称来搜索语言,此外,还可以使Language唯一。

关于sql-server - 聚集索引与覆盖索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com