多个复合索引与单个非聚集列存储索引

Multiple composite index vs single non-clustered column store index

我们有一个 OLTP 系统,我们有一个网格,其中包含来自多个表的近 20 列。网格根据涉及大约 6 列的搜索参数加载。数据量巨大,来自后台表的 100M 行。

为了提高网格加载的性能,我们创建了具有单个唯一聚集索引的索引视图。我们目前想看看如何提高搜索参数的性能:a,b,c,d,e,f

The search can be based on any of the combination: (a), (a,c),(d,e), (a,b,c) ... (a,b,c,d,e,f)

我们正在考虑选择以下选项之一:

请问哪种方法更好?

UPDATE:刚读到,非聚集列存储索引不支持包含列。如果问题已关闭,将通过评论或回答来进一步尝试并更新答案。

由于要考虑的组合太多,您将需要很多索引。

所以,最多,我会为一些流行的列做一个或两个列索引(取决于第一列的选择性)。任何更宽的东西都是浪费时间,因为无论哪种方式,索引都是有选择性的。

你绝对可以在非聚集索引上做INCLUDE列。在这种情况下,这是值得的如果只有那些列带回来,否则在任何情况下都需要进行键查找。

您还应该在查询中考虑类似 OPTION (RECOMPILE) 的内容。参见 Aaron Bertrand 的 #BackToBasics: An Updated Kitchen Sink Example