小编Ami*_*ble的帖子

为什么索引视图不允许非唯一聚集索引?

我一直在研究使用索引视图来提高一些最常用的视图的性能。

然而,索引视图不支持非唯一聚集索引,这与数据库结构的其余部分设置的优先级略有不同。

例如,这是我们几个表的简化版本。

-Groups-
Group ID    GroupName

-Users-
UserKey    UserName    FullName     GroupID
Run Code Online (Sandbox Code Playgroud)

索引位于 Groups.GroupID(非集群)和 Users.GroupID(集群)上。聚集键位于用户表中的 GroupID 上,因为最常见的是将检索来自特定组的用户范围。显然每个组会有多个用户,所以这个聚集索引是非唯一的。

这让我有点不确定在索引我的视图(例如这个例子)时如何遵循这个优先级,因为我不能有一个非唯一的聚集索引。

ConsumableID    ConsumableVariantID AllowThresholdOverwrite FullPath    GroupID ManufacturerID  Type    ModelID
101              29                 1                       0.1.2.4.    4       3               3       2
Run Code Online (Sandbox Code Playgroud)

实际上,此视图上唯一始终唯一的值是 ConsumableID 列,因此在放置索引的位置方面我几乎没有选择。

当常规表允许时,为什么视图不允许非唯一聚集索引?

sql-server clustered-index materialized-view

12
推荐指数
1
解决办法
1万
查看次数