range,list,hash partitioning tables 初识

Partitioning table 初识,区分(堆表与分区表、分区特性)

 

1create range partition table

 

CREATE TABLE time_range_sales

   ( prod_id        NUMBER(6)

   , cust_id        NUMBER

   , time_id        DATE

   , channel_id     CHAR(1)

   , promo_id       NUMBER(6)

   , quantity_sold  NUMBER(3)

   , amount_sold    NUMBER(10,2)

   )

PARTITION BY RANGE (time_id)

 (PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')),

  PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')),

  PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')),

  PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE)

 );

 

doudou@TEST> select table_name,status,partitioned from user_tables;

 

TABLE_NAME                     STATUS                         PARTITIONED

------------------------------ ------------------------------ ------------------------------

TIME_RANGE_SALES               VALID                          YES

 

doudou@TEST>  select partition_name,partition_position,high_value from

  2   user_tab_partitions where table_name='TIME_RANGE_SALES';

 

PARTITION_NAME       PARTITION_POSITION HIGH_VALUE

-------------------- ------------------ --------------------------------------------------

SALES_1998                            1 TO_DATE(' 1999-01-01 00:00:00', 'SYYYY-MM-DD HH24:

                                        MI:SS', 'NLS_CALENDAR=GREGORIAN')

 

SALES_1999                            2 TO_DATE(' 2000-01-01 00:00:00', 'SYYYY-MM-DD HH24:

                                        MI:SS', 'NLS_CALENDAR=GREGORIAN')

 

SALES_2000                            3 TO_DATE(' 2001-01-01 00:00:00', 'SYYYY-MM-DD HH24:

                                        MI:SS', 'NLS_CALENDAR=GREGORIAN')

 

SALES_2001                            4 MAXVALUE

 

2、  create list partition table

 

CREATE TABLE list_sales
   ( prod_id        NUMBER(6)
   , cust_id        NUMBER
   , time_id        DATE
   , channel_id     CHAR(1)
   , promo_id       NUMBER(6)
   , quantity_sold  NUMBER(3)
   , amount_sold    NUMBER(10,2)
   )
PARTITION BY LIST (channel_id)
 (PARTITION even_channels VALUES (2,4),
  PARTITION odd_channels VALUES (3,9)
 ); 

 

doudou@TEST> select table_name,status,partitioned from user_tables where table_name='LIST_SALES';

 

TABLE_NAME           STATUS                         PARTITIONED

-------------------- ------------------------------ ------------------------------

LIST_SALES           VALID                          YES

 

doudou@TEST>  select partition_name,partition_position,high_value from

  2   user_tab_partitions where table_name='LIST_SALES';

 

PARTITION_NAME       PARTITION_POSITION HIGH_VALUE

-------------------- ------------------ --------------------------------------------------

EVEN_CHANNELS                         1 '2', '4'

ODD_CHANNELS                          2 '3', '9'

 

3、  create hash partition table

 

CREATE TABLE hash_sales
   ( prod_id        NUMBER(6)
   , cust_id        NUMBER
   , time_id        DATE
   , channel_id     CHAR(1)
   , promo_id       NUMBER(6)
   , quantity_sold  NUMBER(3)
   , amount_sold    NUMBER(10,2)
   )
PARTITION BY HASH (prod_id)
PARTITIONS 2; 

 

doudou@TEST> select table_name,status,partitioned from user_tables where table_name='HASH_SALES';

 

TABLE_NAME           STATUS                         PARTITIONED

-------------------- ------------------------------ ------------------------------

HASH_SALES           VALID                          YES

 

doudou@TEST>  select partition_name,partition_position,high_value from

  2   user_tab_partitions where table_name='HASH_SALES';

 

PARTITION_NAME       PARTITION_POSITION HIGH_VALUE

-------------------- ------------------ --------------------------------------------------

SYS_P21                               1

SYS_P22                               2

 

4、  create heap-organized table “DOUDOU”

 

doudou@TEST>  select table_name,status,partitioned from user_tables where table_name='DOUDOU';

 

TABLE_NAME           STATUS                         PARTITIONED

-------------------- ------------------------------ ------------------------------

DOUDOU               VALID                          NO

 

总结:

1、  如何区别分区表与堆组织表?

可以通过视图user_tables中的列PARTITIONED YES or NO 来判断。

2、  如何区别分区表特性?

可以通过视图user_tab_partitions中的列HIGH_VALUE值判断。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26442936/viewspace-752766/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26442936/viewspace-752766/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值