应该在 INSERT 之前还是之后对表进行分区?

JHF*_*HFB 2 oracle-11g-r2

我有一个相当简单的问题,但事实证明它很难搜索。

我需要创建一个将被分区的表,并将(大量)数据加载到其中。

使用分区创建表或在插入数据后添加分区是否更有效?

附加:为了确保我理解完整的图片,如果我要截断这个表然后再次加载(大量)数据,我应该删除分区然后在加载后添加吗?

ADDTION #2:如果我可以按分区的顺序插入数据,我认为这会比不快吗?

Jus*_*ave 6

您不能对现有的未分区表进行分区。所以如果你想要一个分区表,你需要在插入任何数据之前创建一个分区表。

假设您没有使用间隔分区(在这种情况下,您告诉 Oracle 如何根据数据自动添加新分区),您几乎肯定希望提前创建适当的分区。如果您对表进行范围分区,理论上您可以为表创建一个 MAXVALUE 分区,加载所有数据,然后将 MAXVALUE 分区拆分为您想要的各个分区。但这将涉及多次移动所有数据,这比从一开始就将数据简单地加载到适当的分区中效率要低得多。

从性能角度来看,“按分区顺序”插入数据可能不会有什么不同。Oracle 仍然必须为每一行确定将其插入到哪个分区。假设您的索引是本地的,加载一个其结构与分区结构匹配的临时表,在临时表上创建适当的索引,然后进行分区交换以将空分区与临时表交换可能会更有效.