场景我有一个 1000 万行的表。我将它分成 10 个分区,这导致每个分区有 100 万行,但我没有做任何其他事情(比如将分区移动到不同的文件组或心轴)
我会看到性能提升吗?这实际上就像创建 10 个较小的表吗?如果我有执行键查找或扫描的查询,性能是否会提高,就好像它们是针对一个小得多的表进行操作一样?
我正在尝试了解分区与仅拥有一个索引良好的表有何不同,以及它可以在哪些方面用于提高性能。
将旧数据(使用分区切换)从主表移动到只读存档表是否更好?
拥有一个包含 100 万行分区和 900 万行分区的表是否类似于(性能方面)将 900 万行移动到另一个表并在原始表中仅保留 100 万行?
最佳答案
分区不是性能特征,而是用于维护操作,例如在表之间移动数据和真正快速地删除数据。将一个 1000 万行的表分成 10 个分区,每个分区有 100 万行,这不仅不会提高大多数查询的性能,而且可能会使其中的一些查询变慢。
除非可以确定查询只需要该分区中的行,否则任何查询都不能对单个分区的较小行集进行操作。但是,通过在表上正确选择聚簇索引,或者至少选择一个良好的覆盖非聚簇索引,总是可以解决这个问题,而且效果会好得多。
关于sql-server - SQL Server 分区是否会在不更改文件组的情况下提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701143/