我正在为一个新项目工作,该项目需要根据两列(城市和地区)对表进行分区。 oracle 数据库支持吗?
我之前从事的项目是在创建表时根据一列对数据库进行分区。但我不知道如何使用两列进行分区,我们是使用相同的语义还是不同的语义
CREATE TABLE TEST (....)
PARTITION BY RANGE (date1) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION TEST_INITIAL VALUES less than (DATE '2000-01-01')
);
最佳答案
如果您有 Oracle 12.2 或更高版本,这很容易。使用自动分区。例如,
CREATE TABLE my_auto_partitioned_table
( id NUMBER,
city_name VARCHAR2(80),
area_name VARCHAR2(80),
other_data VARCHAR2(400) )
PARTITION BY LIST ( city_name, area_name) AUTOMATIC
( PARTITION p_dummy VALUES (null, null) )
;
在 12.2 之前,可以使用 LIST-LIST 分区,但这真的很痛苦,因为您必须预先创建所有分区和子分区。例如,
CREATE TABLE my_partitioned_table
( id NUMBER,
city_name VARCHAR2(80),
area_name VARCHAR2(80),
other_data VARCHAR2(400) )
PARTITION BY LIST ( city_name )
SUBPARTITION BY LIST ( area_name )
-- if your area names are generic (e.g., "north"/"south" or "downtown"/"suburbs"),
-- you can use a SUBPARTITION TEMPLATE clause right here...
( PARTITION p_philadelpha VALUES ( 'PHILADELPHIA')
( SUBPARTITION p_philly1 VALUES ('SOUTH PHILLY','WEST PHILLY'),
SUBPARTITION p_philly2 VALUES ('NORTH PHILLY','OLD CITY')
),
PARTITION p_new_york VALUES ( 'NEW YORK')
( SUBPARTITION p_nyc1 VALUES ('SOHO'),
SUBPARTITION p_nyc2 VALUES ('HELL''S KITCHEN')
)
);
关于database - 我们可以根据两列对 oracle 数据库进行分区吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57616680/