我正在MS SQL 2016中处理一个繁重的记录集数据库。所以我想使用行表分区特性来提高速度。
正如我们所知道的,分区特性作用于表的分区列。假设表的Date列。在我们的场景中,由于在5到7个表中设置了heaver记录,因此需要对许多表进行分区。并不是每个表都有该日期列。也不可能在每个表中添加该列。
那么有没有什么方法可以选择另一个表或其他表的分区列呢?
发布于 2019-01-08 23:55:24
最好的选择是向所有表中添加一个公共列,然后使用该列进行分区。您必须已经有了一种将不同的表相互关联的方法,以便可以使用此方法为每个表标记正确的分区列。
此列可以像使用YYYYMM的int一样简单,就像每月分区的值一样。
你还需要确保你的查询是“分区感知”的。这意味着您应该在WHERE子句和任何查询的JOIN子句中包含此列。使用查询计划来确保您正在对查询进行分区消除。
如果您不能更改模型(但可以添加分区?)然后,您可以在每个表中使用不同的列实现分区,前提是每个表中只有一个列可以对命名范围进行分区-但是如果您有一对多的关系,那么子表的键就不太可能相对于父表是连续的。请注意,这种方法将使您的“分区感知”查询更加复杂。
https://stackoverflow.com/questions/54092098
复制相似问题