主頁(yè) > 知識(shí)庫(kù) > 深入oracle分區(qū)索引的詳解

深入oracle分區(qū)索引的詳解

熱門標(biāo)簽:百度競(jìng)價(jià)排名 服務(wù)外包 AI電銷 Linux服務(wù)器 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 呼叫中心市場(chǎng)需求 地方門戶網(wǎng)站
表可以按range、hash、list分區(qū),表分區(qū)后,其上的索引和普通表上的索引有所不同,oracle對(duì)于分區(qū)表上的索引分為2類,即局部索引和全局索引,下面分別對(duì)這2種索引的特點(diǎn)和局限性做個(gè)總結(jié)。

局部索引local index
1.局部索引一定是分區(qū)索引,分區(qū)鍵等同于表的分區(qū)鍵,分區(qū)數(shù)等同于表的分區(qū)數(shù),一句話,局部索引的分區(qū)機(jī)制和表的分區(qū)機(jī)制一樣。
2.如果局部索引的索引列以分區(qū)鍵開頭,則稱為前綴局部索引。
3.如果局部索引的列不是以分區(qū)鍵開頭,或者不包含分區(qū)鍵列,則稱為非前綴索引。
4.局部索引只能依附于分區(qū)表上。
5.前綴和非前綴索引都可以支持索引分區(qū)消除,前提是查詢的條件中包含索引分區(qū)鍵。
6.局部索引只支持分區(qū)內(nèi)的唯一性,無(wú)法支持表上的唯一性,因此如果要用局部索引去給表做唯一性約束,則約束中必須要包括分區(qū)鍵列。
7.局部分區(qū)索引是對(duì)單個(gè)分區(qū)的,每個(gè)分區(qū)索引只指向一個(gè)表分區(qū);全局索引則不然,一個(gè)分區(qū)索引能指向n個(gè)表分區(qū),同時(shí),一個(gè)表分區(qū),也可能指向n個(gè)索引分區(qū),對(duì)分區(qū)表中的某個(gè)分區(qū)做truncate或者move,shrink等,可能會(huì)影響到n個(gè)全局索引分區(qū),正因?yàn)檫@點(diǎn),局部分區(qū)索引具有更高的可用性。
8.位圖索引只能為局部分區(qū)索引。
9.局部索引多應(yīng)用于數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中。

全局索引global index
1.全局索引的分區(qū)鍵和分區(qū)數(shù)和表的分區(qū)鍵和分區(qū)數(shù)可能都不相同,表和全局索引的分區(qū)機(jī)制不一樣。
2.全局索引可以分區(qū),也可以是不分區(qū)索引,全局索引必須是前綴索引,即全局索引的索引列必須是以索引分區(qū)鍵作為其前幾列。
3.全局索引可以依附于分區(qū)表;也可以依附于非分區(qū)表。
4.全局分區(qū)索引的索引條目可能指向若干個(gè)分區(qū),因此,對(duì)于全局分區(qū)索引,即使只截?cái)嘁粋€(gè)分區(qū)中的數(shù)據(jù),都需要rebulid若干個(gè)分區(qū)甚至是整個(gè)索引。
5.全局索引多應(yīng)用于oltp系統(tǒng)中。
6.全局分區(qū)索引只按范圍或者散列分區(qū),hash分區(qū)是10g以后才支持。
7.oracle9i以后對(duì)分區(qū)表做move或者truncate的時(shí)可以用update global indexes語(yǔ)句來(lái)同步更新全局分區(qū)索引,用消耗一定資源來(lái)?yè)Q取高度的可用性。
8.表用a列作分區(qū),索引用b做局部分區(qū)索引,若where條件中用b來(lái)查詢,那么oracle會(huì)掃描所有的表和索引的分區(qū),成本會(huì)比分區(qū)更高,此時(shí)可以考慮用b做全局分區(qū)索引。

分區(qū)索引字典
DBA_PART_INDEXES
分區(qū)索引的概要統(tǒng)計(jì)信息,可以得知每個(gè)表上有哪些分區(qū)索引,分區(qū)索引的類型(local/global)
Dba_ind_partitions  每個(gè)分區(qū)索引的分區(qū)級(jí)統(tǒng)計(jì)信息
Dba_indexes/dba_part_indexes 可以得到每個(gè)表上有哪些非分區(qū)索引

索引重建
Alter index idx_name rebuild partition index_partition_name [online nologging]
需要對(duì)每個(gè)分區(qū)索引做rebuild,重建的時(shí)候可以選擇online(不會(huì)鎖定表),或者nologging建立索引的時(shí)候不生成日志,加快速度。
Alter index rebuild idx_name [online nologging]
對(duì)非分區(qū)索引,只能整個(gè)index重建
分區(qū)索引實(shí)例
復(fù)制代碼 代碼如下:

--1、建分區(qū)表 
CREATE TABLE P_TAB( 
C1 INT, 
C2 VARCHAR2(16), 
C3 VARCHAR2(64), 
C4 INT , 
CONSTRAINT PK_PT PRIMARY KEY (C1) 

PARTITION BY RANGE(C1)( 
PARTITION P1 VALUES LESS THAN (10000000), 
PARTITION P2 VALUES LESS THAN (20000000), 
PARTITION P3 VALUES LESS THAN (30000000), 
PARTITION P4 VALUES LESS THAN (MAXVALUE) 
); 
--2、建全局分區(qū)索引 
CREATE INDEX IDX_PT_C4 ON P_TAB(C4) GLOBAL PARTITION BY RANGE(C4) 

PARTITION IP1 VALUES LESS THAN(10000), 
PARTITION IP2 VALUES LESS THAN(20000), 
PARTITION IP3 VALUES LESS THAN(MAXVALUE) 
); 
--3、建本地分區(qū)索引 
CREATE INDEX IDX_PT_C2 ON P_TAB(C2) LOCAL (PARTITION P1,PARTITION P2,PARTITION P3,PARTITION P4); 
--4、建全局分區(qū)索引(與分區(qū)表分區(qū)規(guī)則相同的列上) 
CREATE INDEX IDX_PT_C1 
ON P_TAB(C1) 
GLOBAL PARTITION BY RANGE (C1) 

PARTITION IP01 VALUES LESS THAN (10000000), 
PARTITION IP02 VALUES LESS THAN (20000000), 
PARTITION IP03 VALUES LESS THAN (30000000), 
PARTITION IP04 VALUES LESS THAN (MAXVALUE) 
); 
--5、分區(qū)索引數(shù)據(jù)字典查看 
SELECT * FROM USER_IND_PARTITIONS; 
SELECT * FROM USER_PART_INDEXES; 

您可能感興趣的文章:
  • Oracle輕松取得建表和索引的DDL語(yǔ)句
  • Oracle數(shù)據(jù)庫(kù)中建立索引的基本方法講解
  • Oracle中如何把表和索引放在不同的表空間里
  • oracle索引介紹(圖文詳解)
  • oracle 索引不能使用深入解析
  • Oracle數(shù)據(jù)庫(kù)索引的維護(hù)
  • oracle數(shù)據(jù)庫(kù)索引失效
  • oracle 索引的相關(guān)介紹(創(chuàng)建、簡(jiǎn)介、技巧、怎樣查看) .
  • Oracle 如何創(chuàng)建和使用全文索引
  • Oracle使用強(qiáng)制索引的方法與注意事項(xiàng)

標(biāo)簽:黃山 衡水 湖南 崇左 蘭州 湘潭 銅川 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《深入oracle分區(qū)索引的詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266