可以对已有的表进行分区吗?

时间:2015-11-18 04:20:14

标签: oracle oracle11g partitioning

我想知道我是否可以在已有的表上使用分区。我有一个表,我想根据一列中的值进行划分。我有一些票据(t_id),它们有不同的帐户(a_id)。我想基于a_id划分表格。有可能这样做吗? 因为在该表上运行查询或过程需要花费大量时间。如果不可能,还有其他方法可以减少程序和查询所花费的时间吗?

2 个答案:

答案 0 :(得分:1)

您可以使用DBMS_REDEFINITION包对现有表进行分区。以下链接说明了如何对现有表进行分区。

https://oracle-base.com/articles/misc/partitioning-an-existing-table

程序和查询的执行取决于很多因素。单独对表格进行分区可能没有用。首先,您可以查看缓慢查询的解释计划。它将显示您是否需要收集统计数据或添加索引等。

答案 1 :(得分:0)

您不能直接分区现有的非分区表。您需要根据以下分区方法创建临时表/新表:

  • <强> DBMS_REDEFINITION

    1. 创建分区中间表
    2. 开始重新定义过程
    3. 创建约束和索引(依赖关系)
    4. 完成重新定义过程
  • <强> EXCHANGE PARTITION

    1. 创建分区目标表
    2. EXCHANGE PARTITION
    3. SPLIT PARTITION(如果需要将单个大分区拆分为较小的分区)