最近由於工作需要,研究了下oracle中分割槽表和自動建立分割槽表
主要用到的關鍵字:
partition(建立分割槽表必備)
interval (自動建立分割槽表必備 好像只有oracle10g 和oracle11g 中有該關鍵字)
例子如下:
create table t1
(id varchar2(50) not null,
name varchar2(50),
date_time date
)partition by range(date_time)
interval(numtoyminterval(1,'month'))
(partition p0 values less than (to_date('2000-01-01', 'yyyy-mm-dd')));
該段**表示:
1.建立的表t1
2.建立了預設分割槽表p0,insert 資料時,date_time 小於 '2000-01-01' 的所有資料都儲存在 p0 分割槽表中
3.做到了自動建立分割槽表的功能,interval(numtoyminterval(1,'month')) 按月份自動分割槽
即如果 date_time 的年月找不到已有分割槽,則自動建立新的分割槽
根據分割槽表查詢語句類似:select * from t1 partition (p0);
採用自動建立分割槽優缺點
優點:可以根據實際情況,自動建立分割槽
缺點:建立的分割槽表名稱無法指定(目前我研究的範圍內,無法指定),系統自動預設生成類似sys_p41的分割槽表名
自動建立的分割槽表可以在oracle系統自帶的表中查詢到自己的分割槽表名稱
語句如下:select * from dba_tab_partitions where table_name='t1'
該語句可以查詢到t1下面的所有分割槽表資訊,
如果非要根據分割槽條件找到對應的分割槽表名稱,只能 通過 系統表 dba_tab_partitions 中的high_value 字段,
擷取相關字串匹配條件找出partition_name
Oracle中建立自動標識列
在oracle中建立標識列,不同於sql server中的是,sqlserver中叫自動標識列entity,而oracle中叫序列 sequence 在oracle中建立序列 sequence 分為如下幾步 建立乙個測試表 create tabletb test useridnumber prima...
Oracle中建立自動標識列
1 建立測試表admin create table admin id varchar2 20 name varchar2 10 2 建立乙個序列 sequence 針對主鍵id create sequence innerid 建立乙個序列 minvalue 1 該序列的最小值是1 maxvalue ...
oracle按時間自動建立分割槽表
首先明確分割槽表和表分割槽的區別 表分割槽是一種思想,分割槽表示一種技術實現。當表的大小過g的時候可以考慮進行表分割槽,提高查詢效率,均衡io。oracle分割槽表是oracle資料庫提供的一種表分割槽的實現形式。表進行分割槽後,邏輯上仍然是一張表,原來的查詢sql同樣生效,同時可以採用使用分割槽查...