【问题标题】:How to create partitioned table based on one Integer column (each value = 1 partition) in Oracle 12c?如何在 Oracle 12c 中基于一个整数列(每个值 = 1 个分区)创建分区表?
【发布时间】:2018-03-24 11:19:51
【问题描述】:

Oracle 12c 中有一个非分区表,称之为 't1',有 10M 条记录,有 3 列 (a,b,c)。

“a”列有 100 个不同的整数值。

如何创建第二个表“t2”,该表包含“t1”中的所有值,但基于“a”列进行分区,以便每个分区对应于“a”列中的一个不同值? (应该有 100 个分区)。

谢谢!

【问题讨论】:

  • 查看 Oracle 文档以了解 参考分区

标签: sql oracle partition database-partitioning


【解决方案1】:

在创建表 t2 时创建一个自动列表分区,然后从表 t1 插入记录,这将为提到的列“a”中的每个不同值创建一个新分区。

注意:创建自动列表分区时,您需要指定至少一个分区。

例如:- 创建表 t2 ( 一个数字,b varchar2(200),c varchar2(200) ) 按列表分区 (a) 自动 ( 分区 P_10 值 (10) );

插入t2 select * from t1;

此插入将为每个不同的值自动创建分区。

【讨论】:

  • VALUES (10) 部分在做什么?
  • 正如我已经提到的,我们需要至少一个带有列表分区的分区,因此,在您的情况下,PARTITION P_10 VALUES (10) 会为 a 列创建一个值为 10 的分区。例如,10 只是一个虚拟值。您可以使用 a 列的任何一个 dsitinct 值而不是 10。
  • 好的,那个值 '10' 或者我举的例子 - 需要当前存在于列中,对吗?
  • 列中不必存在 10。但是如果它存在于列中,那么当我们在表 t2 中插入值为 10 的记录时,它将在分区 P_10 下显示一条记录,否则如果 t1 中没有值为 10 的记录,则不会有任何记录分区 P_10。
  • 很高兴知道:)
猜你喜欢
  • 1970-01-01
  • 2015-10-10
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多