我一直在研究使用索引视图来提高一些我们最常用的视图的性能。
但是,索引视图不支持非唯一的聚集索引,这与其余数据库结构设置的优先级略有不同。
例如,这是几个表的简化版本。
-Groups-
Group ID GroupName
-Users-
UserKey UserName FullName GroupID
索引位于Groups.GroupID(非群集)和Users.GroupID(群集)上。聚簇键位于“用户”表中的GroupID上,因为通常会检索到来自特定组的一系列用户。显然,每个组将有多个用户,因此该聚集索引是唯一的。
这使我不确定如何在索引我的视图(例如本示例)时遵循此优先顺序,因为我无法拥有非唯一的聚集索引。
ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID
101 29 1 0.1.2.4. 4 3 3 2
实际上,此View上唯一唯一的值是ConsumableID列,因此在将索引放置到什么地方时,我别无选择。
为什么在常规表允许时View不允许非唯一聚集索引?
(GroupID, UserID)
。不要将自己限制在密钥的单个列中。2-我认为视图的局限性是因为这是一个补充数据对象,需要使行轻松绑定到NC索引。对于一个表,非唯一CI键将附加一个int值,但我认为对于索引视图而言,这将更具挑战性,因为它不是实际表,而是需要反射实际表。