表的最佳分区方法是什么,其中两个重要的列是某些ID?数据库是Oracle 11g

时间:2012-09-26 09:02:40

标签: database performance oracle11g partitioning database-performance

目标是减少COLUMN_1从表格查询中删除的时间。现在这可能需要15-30分钟。

目前来自表的数据被级联规则删除。 COLUMN_1是外键。 我想改变这种方法,以便在删除父行时在BEFORE触发器中截断整个分区。

此外,COLUMN_2会从应用程序中查询数据。

这两个栏目的关系如下:

COL_1    COL_2
 1       1
         2
         3
         4
 2      
         5
         6
         7
         8
         9
         10
 3      
         11
         12
         13
...

两者都有索引。 表有数百万条记录。有很多插入和读取操作。

经过一些研究(oracle doc)后,我会使用范围分区 我需要动态创建分区,因此可能适合Range Interval Partitioning ...

1 个答案:

答案 0 :(得分:0)

有两种选择:

将分区N_Partition切换到新的空表并截断该表:

    ALTER TABLE big_table
    EXCHANGE PARTITION N_partition
    WITH TABLE table_to_be_truncated
    INCLUDING INDEXES 
    WITHOUT VALIDATION 
    UPDATE GLOBAL INDEXES;

    TRUNCATE TABLE table_to_be_truncated
  • 或截断分区
    ALTER TABLE big_table TRUNCATE PARTITION N_partition
    UPDATE INDEXES;

这是一篇很好的文章,介绍了如何使用分区:Maintaining Partitions