一:表分区的应用场景

  用于管理包含大量数据的表。

二:表分区的优点

  1.提高数据的可以性

  2.减少管理负担

  3.改善语句的性能

三:分区的方式:(区间分区、散列分区、列表分区、组合分区)

  1.区间分区(范围分区 range)

    创建区间分区的语法:

      PARTITION BY RANGE (列名)    --range表示分区的方式

      (

        partition 分区表名 values less than (值)

       [ tablespace 表空间]

      )  

        例:按照时间创建表分区。

--创建表时建立分区表
CREATE TABLE drawlist(
drawname VARCHAR2(20),
drawtime DATE NOT NULL
)
PARTITION BY range(drawtime)( --创建表分区,以drawtime为分区范围
PARTITION part_1 VALUES LESS THAN (to_date('2010-1-1','yyyy-mm-dd')), --定义2010-1-1以前的数据保存的分区,不包括2010-1-1
PARTITION part_2 VALUES LESS THAN (to_date('2011-1-1','yyyy-mm-dd')), --定义2011-1-1以前的数据分区
PARTITION part_3 VALUES LESS THAN (to_date('2012-1-1','yyyy-mm-dd')),
PARTITION part_4 VALUES LESS THAN (maxvalue) --其他的值保存的分区
) --插入数据,系统会自动将数据保存到对应的分区表中。
INSERT INTO drawlist
SELECT 'aaa',to_date('2009-10-20','yyyy-mm-dd') FROM dual UNION
SELECT 'bbb',to_date('2009-11-20','yyyy-mm-dd') FROM dual UNION
SELECT 'ccc',to_date('2009-12-20','yyyy-mm-dd') FROM dual UNION
SELECT 'ddd',to_date('2010-10-20','yyyy-mm-dd') FROM dual UNION
SELECT 'eee',to_date('2010-10-20','yyyy-mm-dd') FROM dual UNION
SELECT 'fff',to_date('2011-10-20','yyyy-mm-dd') FROM dual UNION
SELECT 'ggg',to_date('2012-10-20','yyyy-mm-dd') FROM dual --查询分区表
SELECT * FROM drawlist PARTITION (part_1);
SELECT * FROM drawlist PARTITION (part_2);
SELECT * FROM drawlist PARTITION (part_3);
SELECT * FROM drawlist PARTITION (part_4);

  2.散列分区(hash):对于那些无法有效的划分范围的表,可以使用hash分区

    散列分区语法:

    partition by hash()

    (

      partition 分区表名 tablespace 表空间名

    )

  例:

--创建表
CREATE TABLE drawlist(
draw_id NUMBER,
draw_name VARCHAR2(20)
)
--创建散列分区
PARTITION BY HASH(draw_name)
(
PARTITION p1 TABLESPACE USERS,
PARTITION p2 TABLESPACE USERS,
PARTITION p3 TABLESPACE USERS,
PARTITION p4 TABLESPACE USERS
); --生成1000行数据
--查询各个分区表中的数据。
SELECT COUNT(*) FROM drawlist PARTITION (p1);
SELECT COUNT(*) FROM drawlist PARTITION (p2);
SELECT COUNT(*) FROM drawlist PARTITION (p3);
SELECT COUNT(*) FROM drawlist PARTITION (p4);

  3.列表分区(list):可以将数据按照列的值分类

    列表分区语法:

    partition by list()

    (

      partition 分区表名 values(指定值1,指定值2……)

    )

    [tablespace 表空间名]

  例:

CREATE TABLE area
(
CODE NUMBER,
NAME VARCHAR2(20)
)
--创建列表分区
PARTITION BY LIST(CODE)
(
PARTITION p1 VALUES(10,20,30), --指定当code值为10,20,30为第一分区
PARTITION p2 VALUES(40,50,60), --指定当code值为40,50,60为第二分区
PARTITION p_other VALUES(DEFAULT) --其他值为第三分区
) select * from area PARTITION (p1);
select * from area PARTITION (p2);
select * from area PARTITION (p_other);

  

  4.组合分区:就是前三个分区的组合

    优势:使分区表更加灵活

  (1).区间-散列组合分区语法:

    partition by range(列1) subpartition by hash(列2)

    (

      partition 分区表名 values less than(值)

     tablespace 表空间名;

    )

  (2).区间-列表组合分区语法:    

    partition by range(列1) subpartition by list(列2)

    (

      partition 分区表名 values less than(值)

     tablespace 表空间名(

      subpartition 自分区名 values(列表指定值1……)

    tablespace 表空间

              )

    )

四:分区的维护:(增加分区、删除分区、截断分区、合并分区)

  1.增加分区

    语法:

    ALTER TBALE 表名 ADD PARTITION 分区表名 VALUES LESS THAN(值)

--增加区间分区
ALTER TABLE drawlist ADD PARTITION p3 VALUES LESS THEN to_date('2013-1-1','yyyy-mm-dd') TABLESPACE USERS;
--注意:插入的区间数据值不能小于原有的分区表的值。如果包含了maxvalues,必须删除原有分区表

  2.删除分区

    语法:

    ALTER TABLE 表名 DROP PARTITION 分区表名

--删除区间分区
ALTER TABLE drawlist DROP PARTITION p3
--删除分区表后,分区表中的数据也会一同删除

  3.截断分区:删除当前分区中的数据,但是它并不会影响其他分区。

    语法:

    ALTER TABLE 表名 TRUNCATE PARTITION 已经存在的分区表名

--截断分区表P3,清除分区表中的数据
ALTER TABLE drawlist TRUNCATE PARTITION p3

  4.合并分区:   --高界限的分区不能合并到低界限的分区中

    语法:

    ALTER TABLE 表名 MERGE PARTITIONS 分区表1,分区表2 INTO  PARTITION 分区表2

--将分区表p1合并到分区表p2
ALTER TABLE drawlist MERGE PARTITIONS p1,p2 INTO PARTITION p2

Oracle基础—表分区的更多相关文章

  1. Oracle基础 表分区

    Oracle基础 表分区 一.表分区 (一)表分区的分类 1.范围分区(range) 2.散列分区(hash) 3.列表分区(list) 4.复合分区:范围-哈希(range-hash).范围-列表( ...

  2. Oracle数据库表分区

    一.Oracle数据库表分区概念和理解         1.1.已经存在的表没有方法可以直接转化为分区表.         1.2.不在分区字段上建立分区索引,在别的字段上建立索引相当于全局索引.效率 ...

  3. oracle的表分区

    (1.) 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.   分区表: 当表中的数据量不断增大,查询数据的速度就 ...

  4. Oracle基础表空间建立,以及练习

    Oracle的表空间创建,可以采用网页的https://127.0.0.1:1158/em来进入oracle的页面进行创建表空间. 利用plsqldev.exe程序在表空间里添加数据: 首先要在use ...

  5. Oracle 删除表分区

    删除表分区(drop partition)    删除表分区包含两种操作,分别是:   Ø 删除分区:alter table [tbname] drop partition [ptname] UPDA ...

  6. oracle 基础表的选择

    基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的. 如果你使用的是CBO (COST BASED OPTI ...

  7. oracle 添加表分区

    alter table DF_WRITE_FILES_H add partition DF_WRITE_FILES_H96 values less than (201512) tablespace T ...

  8. (3)Oracle基础--表

    · 认识表 Oracle中的表都是存储在表空间中,具有以下特点:  <1> 数据的基本存储单元  <2> 二维结构 行:又称为‘记录’ 列:又称为‘字段或域’  <3&g ...

  9. (2)Oracle基础--表空间

    · 表空间概述 <1> 理解表空间 ① 表空间与数据库的关系: 表空间是数据库的逻辑存储空间,可以理解为在数据库中开辟的一块空间,用于存放数据库的对象. 一个数据库可以由多个表空间构成.O ...

随机推荐

  1. VS2008注册码

    PYHYP-WXB3B-B2CCM-V9DX9-VDY8T 如果下载的是90天的试用版,下载下来以后把ISO里面的Setup\setup.sdb文件用记事本打开,把其中的[Product Key]下面 ...

  2. [源码分享] HIVE表数据量统计&邮件

    概要: 计算HIVE BI库下每天数据表总大小及增量 输出: 总大小:xxxG 日同比新增数据量:xxxG 周同比新增数据量:xxxG 月同比新增数据量:xxxG 总表数:xxx 日新增表数:xxx ...

  3. SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用

    由于前一段时间胃痛,导致博客园博客都停更了一个月左右.近几天,胃病终于稍微有所好转,决定重新写博文. 前几天,有个朋友刚好问到本人有关 SQL 语句,大致是原表有两列,分别为月份.月份销售额,而需要一 ...

  4. 【原创】[PS技巧]如何制作翘角纸条的阴影效果

    (从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-05-19) 在网页设计中经常会用到翘角纸条的效果.如:百度空间首页: pic.1 下面我详细讲解一下这个效果使用PS如何制 ...

  5. Django官方文档学习2——数据库及模板

    网址:https://docs.djangoproject.com/en/1.10/intro/tutorial02/ 1.扫描installed_apps,创建需要的数据库table python ...

  6. C#制作艺术字

    相信 Word  中的 艺术字 功能大家都不陌生, 前面这个 "Word" 单词就是它所为. 今天, 我们就利用C#来制作几款自己的艺术字, 可能会对我们了解字体图像的制作原理有一 ...

  7. Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]

    在Android studio中想要运行程序,点击运行后程序安装失败,报出如下异常: 原因:在manifest中设置了 .android:sharedUserId="android.uid. ...

  8. ARM Compiler toolchain Compiler -- Supported ARM architectures

    --cpu=name This option enables code generation for the selected ARM processor or architecture. Synta ...

  9. 解决从内部存储设备安装apk提示Permission Denied

    做应用商店,下载apk,考虑一种情况,如果没有sd卡的情况下就将apk下载到 Internal Cache目录下. 下载都正常,但是在安装的时候提示Permission Denied /data/da ...

  10. [ES6] 12. Shorthand Properties in ES6

    Where destructuring in ES6 allows you to easily get properties out of an object, this shorthand prop ...