【问题标题】:How to combine Index and Columnstore Index?如何结合索引和列存储索引?
【发布时间】:2018-10-13 10:00:54
【问题描述】:

我对实施最佳实践感到困惑,我有一个包含很多字段的表,每个字段都需要汇总以进行分析和报告,但有时我们还需要获取基于行的记录。

实现 PRIMARY KEY + NON CLUSTERED COLUMNSTORE INDEX 或 NOT NULL UNIQUE NONCLUTERED + 聚集列存储索引会更好吗?

【问题讨论】:

  • your 数据和 your 预期查询尝试这两个选项,看看哪个选项效果最好?
  • 谢谢 Damien,一些查询是选择基于行的记录,而一些查询是通过列进行聚合。我有点难以确定对两者的最佳支持,有时聚合更快,但选择行更慢,有时选择行更快,但聚合更慢。

标签: sql-server indexing clustered-index non-clustered-index columnstore


【解决方案1】:

这一切都取决于情况;您的数据看起来如何以及您将如何搜索这些数据。

每个表肯定需要一个主键。 PK 是否需要聚集取决于您是否有更适合放置聚集索引的列。 (聚集索引应该放置在其值不会改变并递增增加的列上,这意味着下一个值应该高于前一个值)。

在哪里放置索引以及索引的类型、索引中列的顺序以及是否需要“包含列”都取决于具体情况,您需要对此进行一些分析。

【讨论】:

  • 谢谢Frederik,所以表肯定需要主键吗?是的,打算作为主键的 ID 列逐渐增加,并且没有更新该列。您认为使用非聚集列存储索引还是聚集列存储索引的最佳方案是什么?在什么例子中
  • 每个表只能有一个聚集索引,因为聚集索引处于叶级并定义了存储顺序。因此,如果您的 PK 已经聚集,则其他索引需要是非聚集的
猜你喜欢
  • 2020-09-15
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 2010-10-13
  • 2012-01-20
相关资源
最近更新 更多