oracle分割槽索引(一)
對索引的分割槽有兩種方法:
區域性分割槽索引:locally partitioned index 每個表分割槽都有一個索引分割槽,而且只索引該表分割槽。
區域性分割槽索引分為兩類:區域性字首索引,分割槽鍵在定義的前幾列上。使用區域性字首索引的查詢總允許索引分割槽消除,而使用區域性非字首索引的查詢可能不允許。
區域性非字首索引
全域性分割槽索引:globally partitioned index 一個索引分割槽可能指向任何表分割槽。實際上索引分割槽數可能不等於表分割槽數。
由於全域性索引只按區間或者雜湊分割槽,如果希望有一個組合或者列表分割槽索引,就必須使用區域性索引。區域性索引會使用與底層表相同的機制分割槽。
消除分割槽測試程式碼:
如果有多個列的查詢,比如 (a,b),a那麼可以建一個(基於a分割槽)非字首索引(a,b)
select *from all_objects where object_name like '%PARTITIONED_TABLE%'
/
CREATE TABLE partitioned_table
( a int,
b int,
data char(20)
)
PARTITION BY RANGE (a)
(
PARTITION part_1 VALUES LESS THAN(2) tablespace mytest1,
PARTITION part_2 VALUES LESS THAN(3) tablespace mytest2
)
/
create index local_prefixed on partitioned_table (a,b) local;--區域性字首索引
create index local_nonprefixed on partitioned_table (b) local;--區域性非字首索引
insert into partitioned_table
select mod(rownum-1,2)+1, rownum, 'x'
from all_objects;
begin
dbms_stats.gather_table_stats
( user,
'PARTITIONED_TABLE',
cascade=>TRUE );
end;
/
alter tablespace mytest2 offline;
select * from partitioned_table where a = 1 and b = 1;
delete from plan_table;
explain plan for
select * from partitioned_table where a = 1 and b = 1;
select * from table(dbms_xplan.display);
select * from partitioned_table where b = 1;
delete from plan_table;
explain plan for
select * from partitioned_table where b = 1;
select * from table(dbms_xplan.display);
drop index local_prefixed;
select * from partitioned_table where a = 1 and b = 1;
delete from plan_table;
explain plan for
select * from partitioned_table where a = 1 and b = 1;
select * from table(dbms_xplan.display);
/
CREATE TABLE partitioned_table
( a int,
b int,
data char(20)
)
PARTITION BY RANGE (a)
(
PARTITION part_1 VALUES LESS THAN(2) tablespace mytest1,
PARTITION part_2 VALUES LESS THAN(3) tablespace mytest2
)
/
create index local_prefixed on partitioned_table (a,b) local;--區域性字首索引
create index local_nonprefixed on partitioned_table (b) local;--區域性非字首索引
insert into partitioned_table
select mod(rownum-1,2)+1, rownum, 'x'
from all_objects;
begin
dbms_stats.gather_table_stats
( user,
'PARTITIONED_TABLE',
cascade=>TRUE );
end;
/
alter tablespace mytest2 offline;
select * from partitioned_table where a = 1 and b = 1;
delete from plan_table;
explain plan for
select * from partitioned_table where a = 1 and b = 1;
select * from table(dbms_xplan.display);
select * from partitioned_table where b = 1;
delete from plan_table;
explain plan for
select * from partitioned_table where b = 1;
select * from table(dbms_xplan.display);
drop index local_prefixed;
select * from partitioned_table where a = 1 and b = 1;
delete from plan_table;
explain plan for
select * from partitioned_table where a = 1 and b = 1;
select * from table(dbms_xplan.display);
為了保證唯一性(包括unique約束和primary key約束),如果想使用一個區域性索引來保證這個約束,那麼分割槽鍵必須包括在約束本身中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25323853/viewspace-687187/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle分割槽partition及分割槽索引partition index(一)Oracle索引Index
- Oracle索引分割槽Oracle索引
- Oracle分割槽表及分割槽索引Oracle索引
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- oracle分割槽索引(二)Oracle索引
- oracle索引詳解 分割槽索引Oracle索引
- oracle 建立所有分割槽索引Oracle索引
- Oracle分割槽之五:建立分割槽索引總結Oracle索引
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- oracle分割槽及分割槽索引partition_partition index_維護(一)Oracle索引Index
- 【原創】ORACLE 分割槽與索引Oracle索引
- Oracle的分割槽索引技術Oracle索引
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- oracle本地分割槽索引跨分割槽對成本的影響Oracle索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- Oracle分割槽表全域性索引新增分割槽時不會失效Oracle索引
- oracle 針對普通表的索引分割槽及10g新增hash 索引分割槽Oracle索引
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- 全域性分割槽索引和區域性分割槽索引索引
- rebuild分割槽表分割槽索引的方法Rebuild索引
- 分割槽表及分割槽索引建立示例索引
- 全面學習分割槽表及分割槽索引(16)--增加和刪除索引分割槽索引
- oracle分割槽及分割槽索引partition_partition index_維護(二)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(三)Oracle索引Index
- oracle分割槽及分割槽索引partition_partition index_維護(四)Oracle索引Index
- [轉]Oracle分割槽索引--本地索引和全域性索引比較Oracle索引
- Oracle分割槽索引--本地索引和全域性索引比較(轉)Oracle索引
- 分割槽表、分割槽索引和全域性索引部分總結索引
- 【INDEX】Oracle分割槽索引技術詳解IndexOracle索引
- 【學習筆記】分割槽表和分割槽索引——概念部分(一)筆記索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- Oracle優化案例-分割槽索引之無字首索引(六)Oracle優化索引
- 分割槽表分割槽索引查詢效率探究索引
- 【三思筆記】 全面學習Oracle分割槽表及分割槽索引筆記Oracle索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- MySQL 分割槽建索引MySql索引