我一直在研究使用索引视图来提高一些最常用的视图的性能。
然而,索引视图不支持非唯一聚集索引,这与数据库结构的其余部分设置的优先级略有不同。
例如,这是我们几个表的简化版本。
-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 列,因此在放置索引的位置方面我几乎没有选择。
当常规表允许时,为什么视图不允许非唯一聚集索引?