3

场景我有一个 1000 万行的表。我将它划分为 10 个分区,这导致每个分区有 100 万行,但我不做任何其他事情(比如将分区移动到不同的文件组或主轴)

我会看到性能提升吗?这实际上就像创建 10 个较小的表一样吗?如果我有执行键查找或扫描的查询,性能是否会提高,就好像它们对更小的表进行操作一样?

我试图了解分区与仅仅拥有一个索引良好的表有何不同,以及它可用于提高性能的地方。

更好的方案是将旧数据(使用分区切换)从主表移到只读存档表吗?

拥有一个具有 100 万行分区和 900 万行分区的表是否类似于(性能方面)将 900 万行移动到另一个表并在原始表中只留下 100 万行?

4

2 回答 2

5

分区不是性能特性,而是用于维护操作,例如在表之间移动数据和快速删除数据。将一个 10M 行的表划分为 10 个 1M 行的分区,这不仅不会提高大多数查询的性能,而且可能会使其中不少查询 变慢

除非可以确定查询只需要该分区中的行,否则任何查询都不能针对单个分区的较小行集进行操作。但是,通过正确选择表上的聚簇索引,或者至少是一个很好的覆盖非聚簇索引,这总是可以解决的,而且要好得多。

于 2010-04-24T06:03:55.670 回答
0

如果您使用的是企业版,那么第一个分区只会对您有所帮助。我相信它会提高你的表现,尽管你将获得的实际好处将取决于你的具体工作量(是的,它总是取决于)。
它并不完全像创建 10 个较小的表,但如果您的查询针对分区范围运行,则该分区中的数据将只是“接触”。在这些情况下,我认为性能改进将是显着的。在查询跨分区范围运行的情况下,性能会更差。
我认为您必须尝试最适合您的数据的解决方案,在某些情况下分区会帮助您,而在另一些情况下会起到相反的作用,分区的另一个好处是您不必担心移动数据大约。

这是一篇关于分区的好文章 - bol

于 2010-04-24T04:12:19.477 回答