Sar*_*ens 2 oracle partitioning oracle11g
我将使用来自Oracle 11g的自动分区,我想知道是否有任何选项可提供特定于分区名称的模式?
例如,我有:
create table
pos_data (
start_date DATE,
store_id NUMBER,
inventory_id NUMBER(6),
qty_sold NUMBER(3),
)
PARTITION BY RANGE (start_date)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION pos_data_init VALUES LESS THAN (TO_DATE('01-01-2017', 'DD-MM-YYYY')),
PARTITION pos_data_201702 VALUES LESS THAN (TO_DATE('01-02-2017', 'DD-MM-YYYY')),
PARTITION pos_data_201703 VALUES LESS THAN (TO_DATE('01-03-2017', 'DD-MM-YYYY')),
);
Run Code Online (Sandbox Code Playgroud)
我将使用init分区来包含2017年之前的所有行,然后是每个月的分区。
如何命名分区将自动生成?是否有可能创建名称结尾为YYYYMM的模式?还是我以后必须重命名那些分区?
不,没有这样的选项可以让您为动态创建的分区指定分区名称模式。如果需要,您可以/应该在以后重命名它们。我个人认为不需要重命名它们。如果要为这些自动生成的分区赋予有意义的名称,以便可以在查询中引用它们,例如:
select *
from partitioned_table
partition (part_1);
Run Code Online (Sandbox Code Playgroud)
那么您可以轻松地使用partition for (<<date>>)
子句来查询特定的分区,它不需要您知道要查询的分区名称:
select *
from partitioned_table
partition for (date '2017-01-01')
Run Code Online (Sandbox Code Playgroud)