代码之家  ›  专栏  ›  技术社区  ›  Tom DeMille

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

  •  3
  • Tom DeMille  · 技术社区  · 16 年前

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

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

    我试图理解分区与仅仅拥有一个索引良好的表有什么不同,以及分区在哪里可以用来提高性能。

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

    拥有一个具有100万行分区和900万行分区的表是否有助于将900万行移到另一个表中,而在原始表中只保留100万行?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Remus Rusanu    16 年前

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

        2
  •  0
  •   Alan Featherston    16 年前

    首先,只有在使用企业版时,分区才有帮助。
    这并不完全等同于创建10个较小的表,但是如果您的查询针对您的分区的范围运行,那么该分区中的数据将只是“touch”。在这种情况下,我认为性能的提高将是显而易见的。在查询跨分区范围运行的情况下,性能会更差。
    我认为您必须尝试哪种解决方案最适合您的数据,在某些情况下分区将帮助您,而在另一些情况下则相反,分区的另一个好处是您不必担心数据的移动。

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