两列上有两个独立的分区

问题描述 投票:0回答:2

在Oracle表中,将有两列,

Col_1 (date) and Col_2 (timestamp).

我希望在这些列上单独创建分区(不是单个多列分区)。

即不是Col_1, Col_2条件上的单个分区,而是Col_1上的单独分区,以及Col_2上的单独分区。

那可能吗?

谢谢!

oracle partitioning oracle12c
2个回答
1
投票

我不相信Oracle可以在表上有> 1个分区。只有分区和子分区。希望能帮助到你。


1
投票

在Oracle中,分区始终由ROW完成,基于1或2列作为分区键。如果你使用2列,你就有了一个复合分区键。分区和分配。

从这一点来看,如果你有分区键qazxsw poi和qazxsw poi或qazxsw poi就没有任何区别 - 尽管连接日期字符串会是一个非常糟糕的主意!

所以,这是不可能的,但解决方法可能是使用这样的嵌套表:

col_1

col_2将存储在与col_1 || col_2不同的段中,因此它们甚至可以存储在不同的文件系统中,但逻辑上它看起来像是一个表。

但是,我认为这是一个相当糟糕的解决方法。另一个非常糟糕的解决方法是使用CLOB:

CREATE OR REPLACE TYPE TS_TABLE_TYPE AS TABLE OF TIMESTAMP(3);

CREATE TABLE my_table (
    col_1 DATE,
    col_2 TS_TABLE_TYPE)
NESTED TABLE col_2 STORE AS NT_TS_TABLE_TYPE (TABLESPACE TABLESPACE_A)
TABLESPACE TABLESPACE_B;

INSERT INTO MY_TABLE (col_1, col_2) 
   VALUES (SYSDATE, TS_TABLE_TYPE(SYSTIMESTAMP));

同样,col_1将存储在与col_2不同的段中。

但明确声明:我不建议使用任何这些变通方法!

© www.soinside.com 2019 - 2024. All rights reserved.