首先明確分區(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
其中add_date_time為分區(qū)字段,每一年一個分區(qū)。 插入100W數(shù)據(jù)
[sql] view
plain copy
查看分區(qū)表的分區(qū)的詳細(xì)信息
[sql] view
plain copy
2、分區(qū)表修改2.1增加一個分區(qū)分兩種情況:1.沒有maxvalue分區(qū)。2.有maxvalue分區(qū)。我們創(chuàng)建的分區(qū)就是沒有maxValue的分區(qū) 1.沒有maxvalue分區(qū)添加新分區(qū):
[sql] view
plain copy
2、有maxvalue分區(qū)添加新分區(qū): 有了maxvalue,就不能直接add partition,而是需要max分區(qū)split。例如我們將創(chuàng)建的分區(qū)的語句修改下:
[sql] view
plain copy
增加一個2016年的分區(qū)語句為:
[sql] view
plain copy
2.2刪除一個分區(qū)
[sql] view
plain copy
注: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
二、對分區(qū)表進(jìn)行查詢
2.1查詢不使用分區(qū)查詢:默認(rèn)查詢所有分區(qū)數(shù)據(jù)
[sql] view
plain copy
使用分區(qū)查詢:只查詢該分區(qū)數(shù)據(jù)
[sql] view
plain copy
2.1插入
[sql] view
plain copy
2.1刪除使用分區(qū)刪除 更新的時候指定了分區(qū),而根據(jù)查詢的記錄不在該分區(qū)中時,將不會刪除數(shù)據(jù)
[sql] view
plain copy
不使用分區(qū)刪除
[sql] view
plain copy
2.1修改使用分區(qū)更新 更新的時候指定了分區(qū),而根據(jù)查詢的記錄不在該分區(qū)中時,將不會更新數(shù)據(jù)
[sql] view
plain copy
不使用分區(qū)
[sql] view
plain copy
三、普通表和分區(qū)表互轉(zhuǎn)普通表—>分區(qū)表 1、新建一個字段一樣的中間的分區(qū)表(T_NEW) 2、將T數(shù)據(jù)導(dǎo)入到T_NEW中
[sql] view
plain copy
將老表重命名
[sql] view
plain copy
將新表重命名
[sql] view
plain copy
這種適合靜態(tài)操作,不保證數(shù)據(jù)一致性。如果在生產(chǎn)環(huán)境切換,利用利用在線重定義功能
|
|