我有一个包含非聚集主键的表。我打算删除此主键,并在同一列上创建一个唯一的覆盖索引。
然后该表没有主键,但是有一个独特的覆盖索引。
我搜索谷歌但找不到相关主题。这根本错了吗?或者它可以完成。
更新
为什么我需要将此索引转换为覆盖索引?
因为这是主键,我有很多基于此键的选择查询。目前,对于每个选择,都需要RID查找,因为这是一个NONE聚簇键。如果我将它转换为覆盖索引,那么对于那些选择的查询,这个RID查找将会消失,并且希望会有更好的性能(至少是执行计划说的那样)。
当然,诚信也是有意的,这也是我将其作为独特覆盖指数的原因。主键是uniqueidentifier。
我想知道的是,这对其他任何事情都有负面影响。
执行计划之前:
执行计划之后:
答案 0 :(得分:1)
这基本上是不寻常的,但可能会有一些罕见的情况,这很好。
你没有告诉我们任何关于想要这样做的原因,所以我们真的不能提供更多。
编辑:
根据Kimberly Tripp的this article,外键可以引用包含列的UNIQUE INDEX列来覆盖查询。
对我而言,这意味着用唯一覆盖索引替换主键可能很好。我能想到的唯一负面含义是,查看表的元数据以查找主键的任何应用程序或查询都找不到,并且可能不够智能而不能使用备用键。例如,如果您曾在此表上构建多维数据集,则“数据源视图”向导可能不会自动创建关系。