我有一个相当简单的问题证明很难搜索。
我需要创建一个将被分区并将(大量)数据加载到其中的表。
在我插入数据后创建带有分区的表或添加分区是否更有效?
补充:为了确保我理解完整的图片,如果我要截断这个表然后再次加载(大量)数据,我应该删除分区然后在加载后添加吗?
补充#2:如果我可以按分区的顺序插入数据,我认为这会比没有更快吗?
我有一个相当简单的问题证明很难搜索。
我需要创建一个将被分区并将(大量)数据加载到其中的表。
在我插入数据后创建带有分区的表或添加分区是否更有效?
补充:为了确保我理解完整的图片,如果我要截断这个表然后再次加载(大量)数据,我应该删除分区然后在加载后添加吗?
补充#2:如果我可以按分区的顺序插入数据,我认为这会比没有更快吗?
您不能对现有的非分区表进行分区。所以如果你想要一个分区表,你需要在插入任何数据之前创建一个分区表。
假设您没有使用间隔分区(在这种情况下,您将告诉 Oracle 如何根据数据自动添加新分区),您几乎肯定会希望提前创建适当的分区。如果您对表进行范围分区,理论上您可以为表创建一个 MAXVALUE 分区,加载所有数据,然后将 MAXVALUE 分区拆分为您想要的各个分区。但这将涉及多次移动所有数据,这比从一开始就简单地将数据加载到适当的分区中效率要低得多。
从性能角度来看,“按分区顺序”插入数据可能不会产生影响。Oracle 仍然必须为每一行确定将其插入到哪个分区。假设您的索引是本地的,那么加载结构与分区结构匹配的临时表,在临时表上创建适当的索引,然后进行分区交换以与临时表交换空分区可能会更有效.