分区表及分区索引(2)--创建range分区

① 创建一个标准的range分区表:


SQL> create table t_range_part (id number(10),name varchar2(10))
  2  partition by range(id)(
  3  partition t_range_1 values less than (10)tablespace users,
  4  partition t_range_2 values less than (20)tablespace users,
  5  partition t_range_3 values less than (30)tablespace users,
  6  partition t_range_max values less than (maxvalue) tablespace users
  7  );
 
Table created


//user_part_tables - 记录分区的表的信息
//user_tab_partitions - 记录表的分区信息。






SQL> select table_name ,partitioning_type,subpartitioning_type,partition_count,partitioning_key_count
  2  from user_part_tables
  3  where table_name = 'T_RANGE_PART';
 
TABLE_NAME                     PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT PARTITIONING_KEY_COUNT
------------------------------ ----------------- -------------------- --------------- ----------------------
T_RANGE_PART                   RANGE             NONE                               4                      1






SQL> select table_name, partition_name ,partition_position ,tablespace_name 
  2  from user_tab_partitions;
 
TABLE_NAME                     PARTITION_NAME                 PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------------------ ------------------ ------------------------------
T_RANGE_PART                   T_RANGE_MAX                                     4 USERS
T_RANGE_PART                   T_RANGE_1                                       1 USERS
T_RANGE_PART                   T_RANGE_2                                       2 USERS
T_RANGE_PART                   T_RANGE_3                                       3 USERS




② 创建global索引range分区:
SQL> create index idx_range_part_id on t_range_part(id)
  2  global partition by range(id)(
  3  partition i_range_1 values less than(10) tablespace users,
  4  partition i_range_2 values less than(40) tablespace users,
  5  partition i_range_3 values less than(maxvalue) tablespace users);
 
Index created


查询索引的分区信息可以通过user_part_indexes、user_ind_partitions两个数据字典:


SQL> select index_name ,table_name ,partitioning_type, subpartitioning_type ,partition_count,locality ,def_tablespace_name
  2  from user_part_indexes
  3  where index_name = 'IDX_RANGE_PART_ID';
 
INDEX_NAME                     TABLE_NAME                     PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT LOCALITY DEF_TABLESPACE_NAME
------------------------------ ------------------------------ ----------------- -------------------- --------------- -------- ------------------------------
IDX_RANGE_PART_ID              T_RANGE_PART                   RANGE             NONE                               3 GLOBAL   USERS






③ Local分区索引的创建最简单,例如:
仍然借助t_partition_range表来创建索引


--首先删除之前创建的global索引
SQL> drop index idx_range_part_id;
 
Index dropped


SQL> create index idx_range_part_id on t_range_part(id) local;
 
Index created


SQL> select index_name ,table_name ,partitioning_type,subpartitioning_type ,partition_count,partitioning_key_count,locality
  2  from user_part_indexes;
 
INDEX_NAME                     TABLE_NAME                     PARTITIONING_TYPE SUBPARTITIONING_TYPE PARTITION_COUNT PARTITIONING_KEY_COUNT LOCALITY
------------------------------ ------------------------------ ----------------- -------------------- --------------- ---------------------- --------
IDX_RANGE_PART_ID              T_RANGE_PART                   RANGE             NONE                               4                      1 LOCAL
 




SQL> select index_name,partition_name,subpartition_count,partition_position,tablespace_name
  2  from user_ind_partitions;
 
INDEX_NAME                     PARTITION_NAME                 SUBPARTITION_COUNT PARTITION_POSITION TABLESPACE_NAME
------------------------------ ------------------------------ ------------------ ------------------ ------------------------------
IDX_RANGE_PART_ID              T_RANGE_2                                       0                  2 USERS
IDX_RANGE_PART_ID              T_RANGE_1                                       0                  1 USERS
IDX_RANGE_PART_ID              T_RANGE_3                                       0                  3 USERS
IDX_RANGE_PART_ID              T_RANGE_MAX                                     0                  4 USERS




可以看出,local索引的分区完全继承表的分区的属性,包括分区类型,分区的范围值即不需指定也不能更改,这就是前面说的:local索引的分区维护完全依赖于其索引所在表。




不过呢分区名称,以及分区所在表空间等信息是可以自定义的,例如:




SQL> select partition_name,high_value,tablespace_name
  2  from user_ind_partitions
  3  order by partition_position;
 
PARTITION_NAME                 HIGH_VALUE                                                                       TABLESPACE_NAME
------------------------------ -------------------------------------------------------------------------------- ------------------------------
T_RANGE_1                      10                                                                               USERS
T_RANGE_2                      20                                                                               USERS
T_RANGE_3                      30                                                                               USERS
T_RANGE_MAX                    MAXVALUE                                                                         USERS








检测:
##################################################################################################


SQL> insert into t_range_part values (1,'adf');
 
1 row inserted
 
SQL> insert into t_range_part values (11,'adfadsf');
 
1 row inserted
 
SQL> insert into t_range_part values (21,'asdfasfd');
 
1 row inserted
 
SQL> insert into t_range_part values (31,'asfasdf');
 
1 row inserted
 
SQL> insert into t_range_part values (41,'asdfasdf');
 
1 row inserted










SQL> select * from t_range_part partition(t_range_1);
 
         ID NAME
----------- ----------
          1 adf
 
SQL> select * from t_range_part partition(t_range_2);
 
         ID NAME
----------- ----------
         11 adfadsf
 
SQL> select * from t_range_part partition(t_range_3);
 
         ID NAME
----------- ----------
         21 asdfasfd


 
SQL> select * from t_range_part partition(t_range_max);
 
         ID NAME
----------- ----------
         31 asfasdf
         41 asdfasdf




##################################################################################################


分区表及分区索引(1)--前言         
分区表及分区索引(2)--创建range分区
分区表及分区索引(3)--创建hash分区
分区表及分区索引(4)--创建list分区
分区表及分区索引(5)--创建range-hash组合分区
分区表及分区索引(6)--创建range-list组合分区
分区表及分区索引(7.1)--怎样管理
分区表及分区索引(7.2)--怎样管理
分区表及分区索引(8)--增加和收缩表分区
分区表及分区索引(9)--删除表分区
分区表及分区索引(10)--交换分区
分区表及分区索引(11)--合并表分区
分区表及分区索引(12)--修改list表分区
分区表及分区索引(13)--分隔表分区
分区表及分区索引(14)--截断、移动和重命名
分区表及分区索引(15)--修改表分区属性和模板
分区表及分区索引(16)--增加和删除索引分区
分区表及分区索引(17)--其它索引分区管理操作
分区表及分区索引(18)--结束语

































































  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值