zoukankan      html  css  js  c++  java
  • 对Oracle中的表进行分区

    表空间是指磁盘上的一块存储区域,用来存放表。

      使用范围分区法对数据量大的表进行分区,分区存放到不同的表空间。

      范围分区就是用表中的某个字段值的范围进行分区。

      比如:

      1)用数值型的id字段,id<100000的在第1个分区,100000<=id<200000的在第二个分区。

      2)用日期类型的字段,2011年的数据在一个分区,2012年的数据在另一个分区,或者也可以按月份进行划分。

      范围分区语法:

      1)partition  by  range(field)    field 就是表中要划分范围的那个字段。

      2)VALUES LESS THAN(value)   value 就是field的值,表示小于这个值的。

         如VALUES LESS THAN(1000) 就表示属性值小于1000,不包括1000

         如VALUES LESS THAN (TO_DATE('2012/2/1','yyyy/MM/dd')) 就表示属性值小于2012年2月1日的,不包括2012年2月1日

      3)在最高的分区中,VALUES LESS THAN(maxValue)定义的是一个最大的值

      范围分区步骤:

      1)建立表空间

      建立三个表空间测试用

    复制代码
    CREATE TABLESPACE APP_TS_01  --建立第一个表空间  APP_TS_01    
    NOLOGGING    --不生成日志
    DATAFILE '/home/oracle/oradata/appdata/app_data_01.def' --指定表空间在磁盘上的位置
    SIZE 1024M    --指定表空间大小
    
    CREATE TABLESPACE APP_TS_02  --建立第二个表空间  APP_TS_02    
    NOLOGGING    --不生成日志
    DATAFILE '/home/oracle/oradata/appdata/app_data_02.def' --指定表空间在磁盘上的位置
    SIZE 1024M    --指定表空间大小
    
    CREATE TABLESPACE APP_TS_03  --建立第三个表空间  APP_TS_03    
    NOLOGGING    --不生成日志
    DATAFILE '/home/oracle/oradata/appdata/app_data_03.def' --指定表空间在磁盘上的位置
    SIZE 1024M    --指定表空间大小
    复制代码

      2)建立表和对表进行分区

    复制代码
    --创建订单表
    create table t_order
    (
      id NUMBER primary key not null ,      --主键
      order_no  VARCHAR2(30) not null,      --订单号
      order_time  DATE not null             --订单时间
    )
    
    --对订单表进行分区
    partition by range (order_time)--根据订单时间范围进行划分
    (
      --小于2012年1月份的数据存放到分区t_order_01,存在表空间APP_TS_01
      PARTITION t_order_01 VALUES LESS THAN (TO_DATE('2012/2/1','yyyy/MM/dd')) TABLESPACE APP_TS_01, 
      --2012年2月份的数据存放到分区t_order_02,存在表空间APP_TS_02
      PARTITION t_order_02 VALUES LESS THAN (TO_DATE('2012/3/1','yyyy/MM/dd')) TABLESPACE APP_TS_02, 
       --2012年3月份的数据存放到分区t_order_03,存在表空间APP_TS_03
      PARTITION t_order_03 VALUES LESS THAN (TO_DATE('2012/4/1','yyyy/MM/dd')) TABLESPACE APP_TS_03 
    )
    复制代码

      4)查询分区数据

    复制代码
    --查询所有分区数据
    select * from t_order
    
    --只查t_order_01分区的订单数据
    select * from t_order PARTITION(t_order_01)
    
    --联合查询t_order_01分区和t_order_02分区的数据
    select * from t_order PARTITION(t_order_01)
    UNION ALL
    select * from t_order PARTITION(t_order_02)
    复制代码

      5)查看当前用户哪些表有分区

    --查看当前用户有哪些表已分区
    SELECT * from USER_TABLES where partitioned='YES'

      6)查看某个表有多少个分区

    --查询某个表有多少个分区
    SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME='表名';
  • 相关阅读:
    mysql 批量插入与单条插入 的效率比较
    jQuery Validate自定义验证方法实现方式
    分析比较多表查询中的IN与JOIN
    SQL中on条件与where条件的区别
    jQuery.ajax向后台传递数组问题
    jquery ajax post 传递数组 ,多checkbox 取值
    孙俪袭击入股海润影视折射啥弊端?
    [WebView学习之三]:使用WebView来创建Apps
    hdu1010 dfs+路径剪枝
    poj 3696 The Luckiest number 欧拉函数在解a^x=1modm的应用
  • 原文地址:https://www.cnblogs.com/zhoushengbing/p/3199721.html
Copyright © 2011-2022 走看看