我的数据库中有一些非常大的表,但是这些数据的很大一部分是“旧的”。
由于无法控制的情况,我不允许删除此“旧”数据。另一个限制是我无法修改数据库,这意味着要向其中添加文件组。按照目前的状态,所有内容都驻留在PRIMARY
文件组中。
我正在考虑将这些表划分为几个分区,例如“新”,“旧”,“已归档”等。为此,我确实有一个“状态”列。
考虑到上述情况和限制,我想知道分区在这里是否有意义。换句话说,如果以这种方式对我的表进行分区,但是所有分区都位于同一文件组上,SQL Server将足够聪明地在我的“新”数据所驻留的基础文件中找到该特殊区域,并且不会碰到具有“旧”数据的区域?
换句话说,如果我的数据中有80%是“旧的”。SQL Server是否具有避免访问100%的基础文件并仅访问20%的包含“新”数据的机制(假设,当然,我WHERE
在查询的子句中指定了分区列)。
我想回答这个问题,就需要了解如何在内部实现分区。我感谢任何指示。