1

我有一个包含非聚集主键的表。我打算删除这个主键并在同一列上创建一个唯一的覆盖索引。

那么该表将没有主键,而是一个唯一的覆盖索引。

我搜索了谷歌,但找不到相关主题。这从根本上是错误的吗?或者没关系。

更新:

为什么我需要将此索引转换为覆盖索引?

因为这是主键,我有很多基于这个键的选择查询。目前,对于每个选择,都需要 RID 查找,因为这是一个 NONE 聚集键。如果我将它转换为覆盖索引,那么对于那些选择查询,这个 RID 查找将消失,并且希望会有更好的性能(至少执行计划是这样说的)。

当然,完整性也是意料之中的,这就是我将其设为唯一覆盖索引的原因。主键是唯一标识符。

我想知道的是,这是否会对其他任何事情产生负面影响。

之前的执行计划:

在此处输入图像描述

之后的执行计划:

在此处输入图像描述

4

1 回答 1

1

这从根本上来说是不寻常的,但在一些罕见的情况下可能会很好。

你没有告诉我们任何想要这样做的原因,所以我们真的不能提供更多。

编辑:

根据Kimberly Tripp 的这篇文章,外键可以引用 UNIQUE INDEX 的列,其中包含列以覆盖查询。

对我来说,这意味着用唯一覆盖索引替换主键可能没问题。我能想到的唯一负面影响是,任何查看表的元数据以查找主键的应用程序或查询都找不到主键,并且可能不够聪明而无法使用备用键。例如,如果您曾经在此表上构建了一个多维数据集,则数据源视图向导可能不会自动创建关系。

于 2017-07-26T13:20:41.910 回答