程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 細化解析:Oracle表分區

細化解析:Oracle表分區

編輯:Oracle數據庫基礎

Oracle表分區裡可以把一個表分割為多個小部分,這樣可以對Oracle表分區的查詢性能,管理表數據,備份和恢復操作的性能優化帶來改善。

Oracle表分區分為好幾種的(范圍分區,散列分區,子分區,列表分區,索引分區)下面我們來慢慢介紹

現在我們來建立一個[范圍分區]

  1. create table RangeTable(  
  2.  id int primary key,  
  3.  name varchar(20),  
  4.  grade int  
  5. )  
  6. partition by rang(grade)  
  7. (  
  8. partition part1 values less then(50) tablespace Part1_tb,  
  9. partition part2 values less then(MAXVALUE) tablespace Part2_tb  
  10. );  

如果grade的值小於50的話 就把記錄放到名為part1的分區當中,part1分區將被存儲在Part1_tb表空間中
其他的就放在part2中 MAXVALUE是Oracle的關鍵字 表示最大值

[散列分區]

  1. create table HashTable(  
  2.  id int primary key,  
  3.  name varchar(20),  
  4.  grade int  
  5. )  

/*有兩種方式,1就是指定分區數目和所使用的表空間,2指定以命名的分區*/

  1. partition by hash(grade)  
  2. partitions 10 -- 指定分區的數目  
  3. store in(Part1_tb,Part2_tb,Part3_tb) --如果指定的分區數目比表空間多,分區會以循環方式分配到表空間  
  4. /*------------------------------------*/  
  5. partition by rang(grade)--這種方式就是 指定以命名的分區  
  6. (  
  7.  partition part1 tablespace Part1_tb,  
  8.  partition part2 tablespace Part2_tb  
  9. );  

[子分區]即是分區的分區

  1. create table ChildTable(  
  2.  id int primary key,  
  3.  name varchar(20),  
  4.  grade int  
  5. )  
  6. partition by rang(grade)  
  7. subpartition by hash(grade)  
  8. partitions 5  
  9. (  
  10.  partition part1 values less then(30) tablespace Part1_tb,  
  11.  partition part2 values less then(60) tablespace Part2_tb,  
  12.  partition part3 values less then(MAXVALUE) tablespace Part3_tb  
  13. );  

[列表分區]告訴Oracle表分區所有可能的值

  1. create table ListTable(  
  2.  id int primary key,  
  3.  name varchar(20),  
  4.  area varchar(10)  
  5. )  
  6. partition by list(area)  
  7. (   
  8.  partition part1 values('guangdong','beijing') tablespace Part1_tb,  
  9.  partition part2 values('shanghai','nanjing') tablespace Part2_tb  
  10. );  

[索引分區]索引也可以按照和表進行分區時使用的相同的值范圍來分區

  1. create index IndexTable_index  
  2. on IndexTable(name)  
  3. local  
  4. (  
  5.  partition part1 tablespace Part1_tb,  
  6.  partition part2 tablespace Part2_tb  
  7. )  
  8. --local 告訴Oracle表 IndexTable的每一個分區建立一個獨立的索引  
  9. create index IndexTable_index  
  10. on IndexTable(name)  
  11. global;  

--global為全局索引 全局索引可以包含多個分區的值 局部索引比全局索引容易管理,而全局索引比較快
注意:不能為散列分區 或者 子分區創建全局索引

查詢某一個表分區

  1. select * from table partition(part1);  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved