3

我发现在特定表上使用的分区正在损害查询性能,并希望从表中删除分区。是否有捷径可寻?有问题的表有 64 个分区。根据一些初步调查,我提出了以下选项。有没有更好的办法?

  1. 将数据复制到另一个表中,删除所有分区,然后将数据复制回原始表中
  2. 将数据复制到另一个表中,删除原始表,然后重命名新表并重建索引
  3. 使用 MERGE PARTITION 将所有分区合并为一个分区

想法?

4

1 回答 1

4

我个人认为选项 2 的变体听起来是最好的方法。

  1. 从旧表中选择 * 创建新表
  2. 在新表上建立索引(*)
  3. 将旧表重命名为不同的东西
  4. 将新表重命名为旧表名
  5. 将任何外键约束从旧表切换到新表。还转移任何授权、同义词等。
  6. 慢慢放下旧桌子

(*) 非分区表可能需要与分区表不同的索引。如果您特别关注索引名称,则可以ALTER INDEX ... RENAME TO ...在第 6 步之后使用语法。

这种方法的优点是它可以最大限度地减少您的停机时间(基本上是第 3、4 和 5 步)。

于 2009-12-02T15:50:02.980 回答