SQL Server分区是否会在不更改文件组的情况下提高性能

时间:2010-04-23 18:42:54

标签: sql-server performance partitioning

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

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

我正在尝试理解分区与仅具有良好索引的表的区别,以及它可用于提高性能的位置。

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

是否有一个包含100万行分区的表和一个900万行分区(性能明智)将900万行移动到另一个表并在原始表中只留下100万行?

2 个答案:

答案 0 :(得分:5)

分区不是一种性能特性,适用于维护操作,例如在表之间移动数据和快速丢弃数据。将10M行表分区为10个1M行分区,每个不仅不会增加大多数查询性能,很可能会使其中的一些更慢

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

答案 1 :(得分:0)

第一次分区只会在您使用企业版时帮助您。 我相信它会提高你的表现,虽然你获得的实际好处将取决于你的具体工作量(yhea,它总是取决于)。
它不完全是创建10个较小的表,但如果您的查询针对您的分区范围运行,则该分区中的数据将只是“触摸”。在这些情况下,我认为性能改进将是显而易见的。如果查询在分区范围内运行,则性能会更差 我认为你必须尝试哪种解决方案最适合你的数据,在某些情况下分区会帮助你,而另一些则会反过来,分区的另一个好处是你不必担心移动你的数据周围。

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