原 分区表 之 Interval分区 和 虚拟列 按星期分区表https://blog.csdn.net/tianlesoftware/article/details/5662337版权声明: https://blog.csdn.net/tianlesoftware/article/details/5662337
今天朋友问我, 说想建一个按星期分区的表,就是按星期几分区,没用过,就搜了下,可以用Oracle 11g 中虚拟列来实现。在11g之前 分区表的partition key必须是物理存在的。 11g开始提供了虚拟列,并且可以作为partition key 。
关于分区表,之前也做个整理:
Oracle 分区表
http://www.cndba.cn/redhat/article/2304
Oracle 11g 新特性简介
http://www.cndba.cn/Dave/article/1207
一.按星期分区表示例:
1. 创建分区表:
CREATE TABLE PT
(
getdate date NOT NULL,
wd NUMBER GENERATED ALWAYS AS (TO_NUMBER (TO_CHAR (getdate, 'D'))) VIRTUAL
)
PARTITION BY LIST (wd)
(PARTITION Sun VALUES (1),
PARTITION Mon VALUES (2),
PARTITION Tue VALUES (3),
PARTITION Wed VALUES (4),
PARTITION Thu VALUES (5),
PARTITION Fri VALUES (6),
PARTITION Sat VALUES (7)
);
2. 插入测试数据
SQL> insert into pt(getdate) values(sysdate);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-1);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-2);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-3);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-4);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-5);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-6);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-7);
已创建 1 行。
SQL> commit;
提交完成。
3. 查看数据:
SQL> select * from pt;
GETDATE WD
-------------- ----------
06-6月 -10 1
07-6月 -10 2
08-6月 -10 3
09-6月 -10 4
10-6月 -10 5
03-6月 -10 5
04-6月 -10 6
05-6月 -10 7
已选择8行。
SQL> alter session set nls_date_format='YYYY-MM-DD';
分区表之Interval分区和虚拟列按星期分区表
最新推荐文章于 2022-06-02 09:15:00 发布
本文介绍了如何在Oracle 11g中使用虚拟列和Interval分区创建按星期和时间自动分区的表。通过示例详细展示了创建按星期分区的表以及Interval分区表的过程,包括插入数据、查看和操作分区内容。这种自动分区方式简化了数据库管理员的日常工作,尤其是在处理大量数据时。
摘要由CSDN通过智能技术生成