Oracle分割槽表

2021-10-23 06:12:40 字數 3925 閱讀 4928

1、範圍分割槽(range)

create table range_part_tab

(id        number,

deal_date date,

area_code number,

contents  varchar2(4000)

)partition by range (deal_date)

(partition p201201 values less than (to_date(' 2012-02-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian'))

partition p201202 values less than (to_date(' 2012-03-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian'))

partition p201203 values less than (to_date(' 2012-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian'))   

partition p_max values less than (maxvalue)

);2、雜湊分割槽(hash)

create table hash_part_tab(id number,deal_date date,area_code number,contents varchar2(4000))

partition by hash(deal_date)

partitions 12

;3、列表分割槽(list)

create table list_part_tab(id number,deal_date date,area_code number,contents varchar2(4000))

partition by list(area_code)

(partition p_591 values(591),

partition p_592 values(592),

partition p_593 values(593),

partition p_594 values(594),

partition p_595 values(595),

partition p_596 values(596),

partition p_597 values(597),

partition p_598 values(598),

partition p_599 values(599),

partition p_other values(default)

);4、組合分割槽

比如oracle 11g以前有範圍-雜湊組合分割槽、範圍-列表組合分割槽;oracle 11g,還提供了range-range、list-range、list-hash、list-list這4種。

create table range_list_part_tab(id number,deal_date date,area_code number,contents varchar2(4000))

partition by range(deal_date)

subpartition by list(area_code)

subpartition template

(subpartition p_591 values(591),

subpartition p_592 values(592),

subpartition p_593 values(593),

subpartition p_594 values(594),

subpartition p_595 values(595),

subpartition p_596 values(596),

subpartition p_597 values(597),

subpartition p_598 values(598),

subpartition p_599 values(599),

subpartition p_other values(default))(

partition p1 values less than(to_date('2012-02-01','yyyy-mm-dd')),

partition p2 values less than(to_date('2012-03-01','yyyy-mm-dd')),

partition p3 values less than(to_date('2012-04-01','yyyy-mm-dd')),

partition p4 values less than(to_date('2012-05-01','yyyy-mm-dd')),

partition p5 values less than(to_date('2012-06-01','yyyy-mm-dd')),

partition p6 values less than(to_date('2012-07-01','yyyy-mm-dd')),

partition p7 values less than(to_date('2012-08-01','yyyy-mm-dd')),

partition p8 values less than(to_date('2012-09-01','yyyy-mm-dd')),

partition p9 values less than(to_date('2012-10-01','yyyy-mm-dd')),

partition p10 values less than(to_date('2012-11-01','yyyy-mm-dd')),

partition p11 values less than(to_date('2012-12-01','yyyy-mm-dd')),

partition p12 values less than(to_date('2013-01-01','yyyy-mm-dd')),

partition p_max values less than(maxvalue)

);5、對分割槽表的操作

select * from range_part_tab partition(p_max);

alter table range_part_tab drop partition p_max;

alter table range_part_tab add partition p201303 values less than (to_date(' 2013-04-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian'))

alter table range_part_tab add partition p_max values less than (maxvalue);

alter table range_part_tab truncate partition p_max;

--分割槽交換,可以實現普通表和分割槽表的某個分割槽之間資料的相互交換,執行一次交換一次。這兩個表字段必須是完全一樣。

create table mid_table as

select * from range_part_tab where 1=2;

alter table range_part_tab exchange partition p201303 with table mid_table;

--分割槽切割

alter table range_part_tab split partition p_max at (to_date('2013-05-01','yyyy-mm-dd')) into (partition p201304,partition p_max);

--分割槽合併

alter table range_part_tab merge partitions p201304,p_max into partition p_max;

Oracle 分割槽表

我們知道在資料庫中,當一張表的資料量增多時,資料的查詢就會變慢,從而影響應用程式的效能。這時我們應該考慮將表分割槽,表分割槽後在邏輯上仍然屬於一張表,只是在物理上儲存在多個檔案中。範圍分割槽將資料基於範圍對映到每乙個分割槽,這個範圍是你在建立分割槽時指定的分割槽鍵決定的。這種分割槽方式是最為常用的,...

oracle表分割槽設計 ORACLE 分割槽表的設計

分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...

oracle表分割槽設計 ORACLE分割槽表的設計

分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...