一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

oracle按時間創(chuàng)建分區(qū)表

 好閨女瑤瑤 2018-03-09

 首先明確分區(qū)表和表分區(qū)的區(qū)別:表分區(qū)是一種思想,分區(qū)表示一種技術(shù)實(shí)現(xiàn)。當(dāng)表的大小過G的時候可以考慮進(jìn)行表分區(qū),提高查詢效率,均衡IO。Oracle分區(qū)表是oracle數(shù)據(jù)庫提供的一種表分區(qū)的實(shí)現(xiàn)形式。表進(jìn)行分區(qū)后,邏輯上仍然是一張表,原來的查詢SQL同樣生效,同時可以采用使用分區(qū)查詢來優(yōu)化SQL查詢效率,不至于每次都掃描整個表

一、分區(qū)表基本操作

1、按時間分區(qū)表創(chuàng)建:

[sql] view plain copy
  1. create table t_test (  
  2.    pk_id                number(30)                      not null,  
  3.   add_date_time        DATE,  
  4.    constraintPK_T_TEST primary key (pk_id)  
  5. )  
  6. PARTITION BY RANGE (add_date_time)  
  7. (  
  8.   PARTITIONt_test_2013_less VALUES LESS THAN (TO_DATE('2013-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss')) TABLESPACE TS_MISPS,  
  9.   PARTITIONt_test_2013 VALUES LESS THAN (TO_DATE('2014-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss')) TABLESPACE TS_MISPS,  
  10.   PARTITION t_test_2014VALUES LESS THAN (TO_DATE('2015-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'))TABLESPACE TS_MISPS  
  11. )  

其中add_date_time為分區(qū)字段,每一年一個分區(qū)。

插入100W數(shù)據(jù)

[sql] view plain copy
  1. declare  
  2.   i    int := 1;  
  3.   yearVARCHAR2(20);  
  4. begin  
  5.   loop  
  6.     year := CASEmod(i, 3)  
  7.              WHEN 0 THEN  
  8.               '2012-01-14 12:00:00'  
  9.              WHEN 1 THEN  
  10.               '2013-01-14 12:00:00'  
  11.              ELSE  
  12.               '2014-01-14 12:00:00'  
  13.             END;  
  14.            insert into t_test values(i, to_date(year'yyyy-mm-dd hh24:mi:ss'));  
  15.     exit when i= 1000000;  
  16.     i := i + 1;  
  17.   end loop;  
  18. end;  

查看分區(qū)表的分區(qū)的詳細(xì)信息

[sql] view plain copy
  1. Select table_name,partition_name,high_value fromdba_tab_partitions where table_name='T_TEST';  

2、分區(qū)表修改

2.1增加一個分區(qū)

分兩種情況:1.沒有maxvalue分區(qū)。2.有maxvalue分區(qū)。我們創(chuàng)建的分區(qū)就是沒有maxValue的分區(qū)

1.沒有maxvalue分區(qū)添加新分區(qū):

[sql] view plain copy
  1. alter table t_test add partition t_test_2015 VALUESLESS THAN (TO_DATE('2015-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACETS_MISPS ;  

2、有maxvalue分區(qū)添加新分區(qū):

有了maxvalue,就不能直接add partition,而是需要max分區(qū)split。例如我們將創(chuàng)建的分區(qū)的語句修改下:

[sql] view plain copy
  1. create table t_test (  
  2.    pk_id                number(30)                      not null,  
  3.   add_date_time        DATE,  
  4.    constraintPK_T_TEST primary key (pk_id)  
  5. )  
  6. PARTITION BY RANGE (add_date_time)  
  7. (  
  8.   PARTITIONt_test_2013_less VALUES LESS THAN (TO_DATE('2013-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss')) TABLESPACE TS_MISPS,  
  9.   PARTITIONt_test_2013 VALUES LESS THAN (TO_DATE('2014-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss')) TABLESPACE TS_MISPS,  
  10.   PARTITIONt_test_2014 VALUES LESS THAN (TO_DATE('2015-01-01 00:00:00','yyyy-mm-ddhh24:mi:ss')) TABLESPACE TS_MISPS,  
  11.     PARTITION t_test_maxVALUES LESS THAN (MAXVALUE)  
  12. )  

增加一個2016年的分區(qū)語句為:

[sql] view plain copy
  1. alter table t_test split partition t_test_max at(TO_DATE('2016-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) into (partitiont_test_2015,partition t_test_max);  

2.2刪除一個分區(qū)

[sql] view plain copy
  1. alter table t_test drop partition t_test_2014  

注:droppartition時,該分區(qū)內(nèi)存儲的數(shù)據(jù)也將同時刪除,你的本意是希望刪除掉指定的分區(qū)但保留數(shù)據(jù),你應(yīng)該使用merge partition,執(zhí)行該語句會導(dǎo)致glocal索引的失效需要重建全局索引

2.3合并分區(qū)

相鄰的分區(qū)可以merge為一個分區(qū),新分區(qū)的下邊界為原來邊界值較低的分區(qū),上邊界為原來邊界值較高的分區(qū),原先的局部索引相應(yīng)也會合并,全局索引會失效,需要rebuild。

[sql] view plain copy
  1. Alter  table t_test  merge partitions t_test_2013  ,t_Test_2014 into partition t_Test_2013_to_2014  

二、對分區(qū)表進(jìn)行查詢

2.1查詢

不使用分區(qū)查詢:默認(rèn)查詢所有分區(qū)數(shù)據(jù)

[sql] view plain copy
  1. select * from t_test  

使用分區(qū)查詢:只查詢該分區(qū)數(shù)據(jù)

[sql] view plain copy
  1. select * from t_testpartition(t_test_2014) where add_date_time >=TO_DATE('2014-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss');  

2.1插入

[sql] view plain copy
  1. insert into t_test values(i, to_date(year,'yyyy-mm-dd hh24:mi:ss'));  

2.1刪除

使用分區(qū)刪除

更新的時候指定了分區(qū),而根據(jù)查詢的記錄不在該分區(qū)中時,將不會刪除數(shù)據(jù)

[sql] view plain copy
  1. delete t_test partition(t_test_2013) where id=1;  

不使用分區(qū)刪除

[sql] view plain copy
  1. delete t_test  whereid=1;  

2.1修改

使用分區(qū)更新

更新的時候指定了分區(qū),而根據(jù)查詢的記錄不在該分區(qū)中時,將不會更新數(shù)據(jù)

[sql] view plain copy
  1. delete t_test where id=1;  
  2. update t_test partition(t_test)  set id=1 where id=2;  

不使用分區(qū)

[sql] view plain copy
  1. delete t_test where id=1;  
  2. update t_test  set id=1 where id=2;  

三、普通表和分區(qū)表互轉(zhuǎn)

普通表—>分區(qū)表

1、新建一個字段一樣的中間的分區(qū)表(T_NEW)

2、將T數(shù)據(jù)導(dǎo)入到T_NEW中

[sql] view plain copy
  1. INSERT INTO T SELECT field1,filed2, …from T  

將老表重命名

[sql] view plain copy
  1. RENAME T TO T_OLD;  

將新表重命名

[sql] view plain copy
  1. RENAME T_NEW TO T;  

這種適合靜態(tài)操作,不保證數(shù)據(jù)一致性。如果在生產(chǎn)環(huán)境切換,利用利用在線重定義功能

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品少妇一区二区三区四区| 精品欧美日韩一二三区 | 国产午夜精品久久福利| 久久综合九色综合欧美| 婷婷九月在线中文字幕| 欧美胖熟妇一区二区三区| 色播五月激情五月婷婷| 国产不卡一区二区四区| 欧美日本亚欧在线观看| 亚洲一区二区三区四区| 久久精品亚洲情色欧美| 国产麻豆一区二区三区在| 色婷婷丁香激情五月天| 日韩av亚洲一区二区三区| 五月综合激情婷婷丁香| 黄片免费在线观看日韩| 青青操在线视频精品视频| 不卡中文字幕在线视频| 99免费人成看国产片| 国产精品亚洲综合色区韩国| 国产免费一区二区三区av大片| 日韩精品少妇人妻一区二区| 中文日韩精品视频在线| 大香蕉伊人一区二区三区| 国产免费成人激情视频| 内射精品欧美一区二区三区久久久 | 久久亚洲精品中文字幕| 熟女乱一区二区三区丝袜| 久久精品伊人一区二区| 欧美日韩国产黑人一区| 日本美国三级黄色aa| 美女激情免费在线观看| 制服丝袜美腿美女一区二区| 九九热这里有精品20| 日韩欧美三级中文字幕| 国产成人精品视频一二区| 黄片三级免费在线观看| 精品日韩av一区二区三区| 99久久免费看国产精品| 中文字幕精品一区二区三| 在线观看国产午夜福利|