GaT*_*mas 7 index sql-server sql-server-2008-r2 partitioning
我们有一个在身份/日期时间 2 上聚集的表。它在相同的 datetime2 上分区。是否有任何理由改为在 datetime2/identity 上进行集群?我通常理解聚类背后的原因,但是包含分区后,情况会发生变化吗?
对表进行分区只是根据分区函数将其划分为“块”。聚集索引将对每个分区内的数据进行排序。
如果您计划运行涉及分区部分的查询(即,向我展示 1 月 5 日和 1 月 12 日之间的销售额),那么将日期作为集群键的前导列对这些查询可能是有利的。这种类型的结构将导致聚集索引搜索,而不是分区扫描。(假设表上没有其他合适的索引。)
如果查询只涉及整个分区,则无关紧要,因为分区消除足以隔离所需的数据。也就是说,首先按日期排序可以消除昂贵的排序操作的需要,这取决于您在做什么。
但这也取决于您需要表中的哪些列。如果您只需要执行某个日期范围内的总销售额汇总之类的操作,则使用以日期作为键的前导(或唯一)列的覆盖非聚集索引可能就足够了,而不是仅重建整个表那。
如果您确实更改了聚集索引,这将影响单例查找(可能通过我认为是主键的标识列),因为它们现在将涉及非聚集索引查找 + 键查找。如果这种类型的活动不是工作负载的主要部分,这会很好,但是您必须非常小心,不要让这些查询选择太多行,否则优化器将根据假设恢复到分区扫描它更便宜。同样,根据您需要的列,创建一个仅包含您需要的列的覆盖非聚集索引可能是有利的。
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |