暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle 分区表-间隔分区简单说明

原创 不吃草的牛_Nick 2023-05-24
753

INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))

间隔分区是传统的范围分区方法的一种扩展。为了实现一个表的间隔分区,必须首先对该表指定一个范围分区的最小数目。不管是使用最小的单范围分区还是使用多范围分区,范围分区键的高位值都称为转变点(transition point).当表中的数据越过转变点后,数据库将自动建立间隔分区。

例如,如果对表使用月间隔,范围分区的最高位值为2009年1月1日,则转变点将位于2009年1月1日.第一个月间隔将为2008年1月,它的下界为2008年1月1日。类似,2008年12月的间隔的下界为2008年12月I日。这里,2008年11月的分区是否存在无所谓。

以下是关于间隔分区需要知道的内容:
★ 在CREATE TABLE语句中使用INTERVAL子句创建间隔分区的表。
★ 在指定间隔分区前应该用分区子句指定至少一个范围分区。
★ 不能使用包含多于一个列的分区键。
★ 分区键必须为NUMBER或DATE类型。
★ 可通过在CREATE TABLE语句中包含STORE IN子句,为分区数据选择性地指定表空间。

下面的例子对4个范围分区(标识为p0、p1、p2和p3)创建一个间隔分区表。这4个范围分区在time_id列上创建,转变点为这些范围分区的最高值(2009年1月1日,在分区p3中)。一旦time_id列的值超过2009年1月1日,数据库将自动产生基于间隔的分区,间隔为一个月。

CREATE TABLE interval_sales
(
prod_id NUMBER(6),
cust_id NUMBER,
time_id DATE,
channel_id CHAR(l),
promo_id NUMBER(6),
quantity_sold NUMBER(3),
amount_sold NUMBER(10,2)
)
PARTITION BY RANGE(time_id)
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION p0 VALUES LESS THAN (TO_DATE('1-1-2006','DD-MM-YYYY')),
PARTITION p1 VALUES LESS THAN (TO_DATE('1-1-2007','DD-MM-YYYY')),
PARTITION P2 VALUES LESS THAN (TO_DATE('1-1-2008','DD-MM-YYYY')),
PARTITION p3 VALUES LESS THAN (TO DATE('1-1-2009','DD-MM-YYYY'))
);

表中间隔分区的数目不存在限制。在这个例子中,数据库将对每个新月份创建一个新间隔分区。



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论