




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一索引介紹1.1 索引的創(chuàng)建語法: CREATE UNIUQE | BITMAP INDEX . ON . ( | ASC | DESC, | ASC | DESC,. TABLESPACE STORAGE LOGGING | NOLOGGINGCOMPUTE STATISTICSNOCOMPRESS | COMPRESS NOSORT | REVERSEPARTITION | GLOBAL PARTITION 相關說明1) UNIQUE | BITMAP:指定UNIQUE為唯一值索引,BITMAP為位圖索引,省略為B-Tree索引。2) | ASC | DESC :可以對多列進行聯(lián)合索引,當
2、為expression時即“基于函數(shù)的索引”3)TABLESPACE:指定存放索引的表空間(索引和原表不在一個表空間時效率更高4)STORAGE:可進一步設置表空間的存儲參數(shù)5)LOGGING | NOLOGGING:是否對索引產(chǎn)生重做日志(對大表盡量使用NOLOGGING來減少占用空間并提高效率6)COMPUTE STATISTICS:創(chuàng)建新索引時收集統(tǒng)計信息7)NOCOMPRESS | COMPRESS :是否使用“鍵壓縮”(使用鍵壓縮可以刪除一個鍵列中出現(xiàn)的重復值8)NOSORT | REVERSE:NOSORT表示與表中相同的順序創(chuàng)建索引,REVERSE表示相反順序存儲索引值9)PAR
3、TITION | NOPARTITION:可以在分區(qū)表和未分區(qū)表上對創(chuàng)建的索引進行分區(qū)1.2 索引特點: 第一,通過創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。 第二,可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。 第三,可以加速表和表之間的連接,特別是在實現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。 第四,在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著減少查詢中分組和排序的時間。 第五,通過使用索引,可以在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。 1.3 索引不足:第一,創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。 第二,索引需要占物理空間,除了數(shù)據(jù)表占
4、數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。 第三,當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度。 1.4 應該建索引列的特點:1)在經(jīng)常需要搜索的列上,可以加快搜索的速度; 2)在作為主鍵的列上,強制該列的唯一性和組織表中數(shù)據(jù)的排列結構; 3)在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度; 4)在經(jīng)常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經(jīng)排序,其指定的范圍是連續(xù)的; 5)在經(jīng)常需要排序的列上創(chuàng)建索引,因為索引已經(jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時間; 6)在經(jīng)常
5、使用在WHERE子句中的列上面創(chuàng)建索引,加快條件的判斷速度。 1.5 不應該建索引列的特點:第一,對于那些在查詢中很少使用或者參考的列不應該創(chuàng)建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,并不能提高查詢速度。相反,由于增加了索引,反而降低了系統(tǒng)的維護速度和增大了空間需求。 第二,對于那些只有很少數(shù)據(jù)值的列也不應該增加索引。這是因為,由于這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數(shù)據(jù)行占了表中數(shù)據(jù)行的很大比例,即需要在表中搜索的數(shù)據(jù)行的比例很大。增加索引,并不能明顯加快檢索速度。 第三,對于那些定義為blob數(shù)據(jù)類型的列不應該增加索引。這是因為,這些列的數(shù)據(jù)量
6、要么相當大,要么取值很少。 第四,當修改性能遠遠大于檢索性能時,不應該創(chuàng)建索引。這是因為,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因此,當修改性能遠遠大于檢索性能時,不應該創(chuàng)建索引。 1.6 限制索引限制索引是一些沒有經(jīng)驗的開發(fā)人員經(jīng)常犯的錯誤之一。在SQL中有很多陷阱會使一些索引無法使用。下面討論一些常見的問題:下面的查詢即使在cust_rating列有一個索引,查詢語句仍然執(zhí)行一次全表掃描。 select cust_Id,cust_name from customers where cust_rating
7、 <> 'aa' 把上面的語句改成如下的查詢語句,這樣,在采用基于規(guī)則的優(yōu)化器而不是基于代價的優(yōu)化器(更智能)時,將會使用索引。 select cust_Id,cust_name from customers where cust_rating < 'aa' or cust_rating > 'aa'特別注意:通過把不等于操作符改成OR條件,就可以使用索引,以避免全表掃描。使用IS NULL 或IS NOT NULL同樣會限制索引的使用。因為NULL值并沒有被定義。在SQL語句中使用NULL會有很多的麻煩。因此建議開發(fā)人員
8、在建表時,把需要索引的列設成 NOT NULL。如果被索引的列在某些行中存在NULL值,就不會使用這個索引(除非索引是一個位圖索引,關于位圖索引在稍后在詳細討論)。如果不使用基于函數(shù)的索引,那么在SQL語句的WHERE子句中對存在索引的列使用函數(shù)時,會使優(yōu)化器忽略掉這些索引。 下面的查詢不會使用索引(只要它不是基于函數(shù)的索引)select empno,ename,deptno from emp where trunc(hiredate='01-MAY-81'把上面的語句改成下面的語句,這樣就可以通過索引進行查找。select empno,ename,deptno from em
9、p where hiredate<(to_date('01-MAY-81'+0.9999;也是比較難于發(fā)現(xiàn)的性能問題之一。 注意下面查詢的例子,account_number是一個VARCHAR2類型,在account_number字段上有索引。下面的語句將執(zhí)行全表掃描:select bank_name,address,city,state,zip from banks where account_number = 990354;Oracle可以自動把where子句變成to_number(account_number=990354,這樣就限制了索引的使用,改成下面的查詢就可
10、以使用索引:select bank_name,address,city,state,zip from banks where account_number ='990354'特別注意:不匹配的數(shù)據(jù)類型之間比較會讓Oracle自動限制索引的使用,即便對這個查詢執(zhí)行Explain Plan也不能讓您明白為什么做了一次“全表掃描”。1.7 查詢索引查詢DBA_INDEXES視圖可得到表中所有索引的列表,注意只能通過USER_INDEXES的方法來檢索模式(schema的索引。訪問USER_IND_COLUMNS視圖可得到一個給定表中被索引的特定列。1.8 組合索引當某個索引包含有多個
11、已索引的列時,稱這個索引為組合(concatented)索引。在 Oracle9i引入跳躍式掃描的索引訪問方法之前,查詢只能在有限條件下使用該索引。比如:表emp有一個組合索引鍵,該索引包含了empno、 ename和deptno。在Oracle9i之前除非在where之句中對第一列(empno)指定一個值,否則就不能使用這個索引鍵進行一次范圍掃描。特別注意:在Oracle9i之前,只有在使用到索引的前導索引時才可以使用組合索引!1.9 ORACLE ROWID通過每個行的ROWID,索引Oracle提供了訪問單行數(shù)據(jù)的能力。ROWID其實就是直接指向單獨行的線路圖。如果想檢查重復值或是其他對
12、ROWID本身的引用,可以在任何表中使用和指定rowid列。1.10 選擇性使用USER_INDEXES視圖,該視圖中顯示了一個distinct_keys列。比較一下唯一鍵的數(shù)量和表中的行數(shù),就可以判斷索引的選擇性。選擇性越高,索引返回的數(shù)據(jù)就越少。1.11 群集因子(Clustering FactorClustering Factor位于USER_INDEXES視圖中。該列反映了數(shù)據(jù)相對于已建索引的列是否顯得有序。如果Clustering Factor列的值接近于索引中的樹葉塊(leaf block的數(shù)目,表中的數(shù)據(jù)就越有序。如果它的值接近于表中的行數(shù),則表中的數(shù)據(jù)就不是很有序。1.12 二
13、元高度(Binary height索引的二元高度對把ROWID返回給用戶進程時所要求的I/O量起到關鍵作用。在對一個索引進行分析后,可以通過查詢DBA_INDEXES的B- level列查看它的二元高度。二元高度主要隨著表的大小以及被索引的列中值的范圍的狹窄程度而變化。索引上如果有大量被刪除的行,它的二元高度也會增加。更新索引列也類似于刪除操作,因為它增加了已刪除鍵的數(shù)目。重建索引可能會降低二元高度。1.13 快速全局掃描從Oracle7.3后就可以使用快速全局掃描(Fast Full Scan這個選項。這個選項允許Oracle執(zhí)行一個全局索引掃描操作??焖偃謷呙枳x取B-樹索引上所有樹葉塊。
14、初始化文件中的 DB_FILE_MULTIBLOCK_READ_COUNT參數(shù)可以控制同時被讀取的塊的數(shù)目。1.14 跳躍式掃描從Oracle9i開始,索引跳躍式掃描特性可以允許優(yōu)化器使用組合索引,即便索引的前導列沒有出現(xiàn)在WHERE子句中。索引跳躍式掃描比全索引掃描要快的多。下面的比較他們的區(qū)別:SQL> set timing onSQL> create index TT_index on TT(teamid,areacode;索引已創(chuàng)建。已用時間: 00: 02: 03.93SQL> select count(areacode from tt;COUNT(AREACODE
15、-7230369已用時間: 00: 00: 08.31SQL> select /*+ index(tt TT_index */ count(areacode from tt;COUNT(AREACODE-7230369已用時間: 00: 00: 07.371.15 索引的類型B-樹索引 位圖索引 HASH索引 索引編排表 反轉鍵索引 基于函數(shù)的索引 分區(qū)索引 本地和全局索引二 索引分類Oracle提供了大量索引選項。知道在給定條件下使用哪個選項對于一個應用程序的性能來說非常重要。一個錯誤的選擇可能會引發(fā)死鎖,并導致數(shù)據(jù)庫性能急劇下降或進程終止。而如果做出正確的選擇,則可以合理使用資源,使
16、那些已經(jīng)運行了幾個小時甚至幾天的進程在幾分鐘得以完成,這樣會使您立刻成為一位英雄。下面就將簡單的討論每個索引選項。下面討論的索引類型:B樹索引(默認類型位圖索引HASH索引索引組織表索引反轉鍵(reverse key索引基于函數(shù)的索引分區(qū)索引(本地和全局索引位圖連接索引2.1 B樹索引 (默認類型B樹索引在Oracle中是一個通用索引。在創(chuàng)建索引時它就是默認的索引類型。B樹索引可以是一個列的(簡單索引,也可以是組合/復合(多個列的索引。B樹索引最多可以包括32列。在下圖的例子中,B樹索引位于雇員表的last_name列上。這個索引的二元高度為3;接下來,Oracle會穿過兩個樹枝塊(branc
17、h block,到達包含有ROWID的樹葉塊。在每個樹枝塊中,樹枝行包含鏈中下一個塊的ID號。樹葉塊包含了索引值、ROWID,以及指向前一個和后一個樹葉塊的指針。Oracle可以從兩個方向遍歷這個二叉樹。B樹索引保存了在索引列上有值的每個數(shù)據(jù)行的ROWID值。Oracle不會對索引列上包含NULL值的行進行索引。如果索引是多個列的組合索引,而其中列上包含NULL值,這一行就會處于包含NULL值的索引列中,且將被處理為空(視為NULL。技巧:索引列的值都存儲在索引中。因此,可以建立一個組合(復合索引,這些索引可以直接滿足查詢,而不用訪問表。這就不用從表中檢索數(shù)據(jù),從而減少了I/O量。B-tree
18、 特點:適合與大量的增、刪、改(OLTP)不能用包含OR操作符的查詢;適合高基數(shù)的列(唯一值多)典型的樹狀結構;每個結點都是數(shù)據(jù)塊;大多都是物理上一層、兩層或三層不定,邏輯上三層;葉子塊數(shù)據(jù)是排序的,從左向右遞增;在分支塊和根塊中放的是索引的范圍;2.2 位圖索引位圖索引非常適合于決策支持系統(tǒng)(Decision Support System,DSS和數(shù)據(jù)倉庫,它們不應該用于通過事務處理應用程序訪問的表。它們可以使用較少到中等基數(shù)(不同值的數(shù)量的列訪問非常大的表。盡管位圖索引最多可達30個列,但通常它們都只用于少量的列。例如,您的表可能包含一個稱為Sex的列,它有兩個可能值:男和女。這個基數(shù)只為
19、2,如果用戶頻繁地根據(jù)Sex列的值查詢該表,這就是位圖索引的基列。當一個表內包含了多個位圖索引時,您可以體會到位圖索引的真正威力。如果有多個可用的位圖索引,Oracle就可以合并從每個位圖索引得到的結果集,快速刪除不必要的數(shù)據(jù)。Bitmapt 特點:適合與決策支持系統(tǒng);做UPDATE代價非常高;非常適合OR操作符的查詢;基數(shù)比較少的時候才能建位圖索引;技巧:對于有較低基數(shù)的列需要使用位圖索引。性別列就是這樣一個例子,它有兩個可能值:男或女(基數(shù)僅為2。位圖對于低基數(shù)(少量的不同值列來說非常快,這是因為索引的尺寸相對于B樹索引來說小了很多。因為這些索引是低基數(shù)的B樹索引,所以非常小,因此您可以經(jīng)
20、常檢索表中超過半數(shù)的行,并且仍使用位圖索引。當大多數(shù)條目不會向位圖添加新的值時,位圖索引在批處理(單用戶操作中加載表(插入操作方面通常要比B樹做得好。當多個會話同時向表中插入行時不應該使用位圖索引,在大多數(shù)事務處理應用程序中都會發(fā)生這種情況。示例下面來看一個示例表PARTICIPANT,該表包含了來自個人的調查數(shù)據(jù)。列Age_Code、Income_Level、Education_Level和Marital_Status都包括了各自的位圖索引。下圖顯示了每個直方圖中的數(shù)據(jù)平衡情況,以及對訪問每個位圖索引的查詢的執(zhí)行路徑。圖中的執(zhí)行路徑顯示了有多少個位圖索引被合并,可以看出性能得到了顯著的提高。
21、如上圖圖所示,優(yōu)化器依次使用4個單獨的位圖索引,這些索引的列在WHERE子句中被引用。每個位圖記錄指針(例如0或1,用于指示表中的哪些行包含位圖中的已知值。有了這些信息后,Oracle就執(zhí)行BITMAP AND操作以查找將從所有4個位圖中返回哪些行。該值然后被轉換為ROWID值,并且查詢繼續(xù)完成剩余的處理工作。注意,所有4個列都有非常低的基數(shù),使用索引可以非??焖俚胤祷仄ヅ涞男?。技巧:在一個查詢中合并多個位圖索引后,可以使性能顯著提高。位圖索引使用固定長度的數(shù)據(jù)類型要比可變長度的數(shù)據(jù)類型好。較大尺寸的塊也會提高對位圖索引的存儲和讀取性能。下面的查詢可顯示索引類型。SQL> select
22、index_name, index_type from user_indexes;INDEX_NAME INDEX_TYPE- -TT_INDEX NORMALIX_CUSTADDR_TP NORMALB樹索引作為NORMAL列出;而位圖索引的類型值為BITMAP。技巧:如果要查詢位圖索引列表,可以在USER _INDEXES視圖中查詢index_type列。建議不要在一些聯(lián)機事務處理(OLTP應用程序中使用位圖索引。B樹索引的索引值中包含ROWID,這樣Oracle就可以在行級別上鎖定索引。位圖索引存儲為壓縮的索引值,其中包含了一定范圍的ROWID,因此Oracle必須針對一個給定值鎖定所有
23、范圍內的ROWID。這種鎖定類型可能在某些DML語句中造成死鎖。SELECT語句不會受到這種鎖定問題的影響。位圖索引的使用限制:基于規(guī)則的優(yōu)化器不會考慮位圖索引。當執(zhí)行ALTER TABLE語句并修改包含有位圖索引的列時,會使位圖索引失效。位圖索引不包含任何列數(shù)據(jù),并且不能用于任何類型的完整性檢查。位圖索引不能被聲明為唯一索引。位圖索引的最大長度為30。技巧:不要在繁重的OLTP環(huán)境中使用位圖索引2.3 HASH索引使用HASH索引必須要使用HASH集群。建立一個集群或HASH集群的同時,也就定義了一個集群鍵。這個鍵告訴Oracle如何在集群上存儲表。在存儲數(shù)據(jù)時,所有與這個集群鍵相關的行都被
24、存儲在一個數(shù)據(jù)庫塊上。如果數(shù)據(jù)都存儲在同一個數(shù)據(jù)庫塊上,并且將HASH索引作為WHERE子句中的確切匹配,Oracle就可以通過執(zhí)行一個HASH函數(shù)和I/O來訪問數(shù)據(jù)-而通過使用一個二元高度為4的B樹索引來訪問數(shù)據(jù),則需要在檢索數(shù)據(jù)時使用4個I/O。如下圖所示,其中的查詢是一個等價查詢,用于匹配HASH列和確切的值。Oracle可以快速使用該值,基于HASH函數(shù)確定行的物理存儲位置。HASH索引可能是訪問數(shù)據(jù)庫中數(shù)據(jù)的最快方法,但它也有自身的缺點。集群鍵上不同值的數(shù)目必須在創(chuàng)建HASH集群之前就要知道。需要在創(chuàng)建HASH集群的時候指定這個值。低估了集群鍵的不同值的數(shù)字可能會造成集群的沖突(兩個
25、集群的鍵值擁有相同的HASH值。這種沖突是非常消耗資源的。沖突會造成用來存儲額外行的緩沖溢出,然后造成額外的I/O。如果不同HASH值的數(shù)目已經(jīng)被低估,您就必須在重建這個集群之后改變這個值。ALTER CLUSTER命令不能改變HASH鍵的數(shù)目。HASH集群還可能浪費空間。如果無法確定需要多少空間來維護某個集群鍵上的所有行,就可能造成空間的浪費。如果不能為集群的未來增長分配好附加的空間,HASH集群可能就不是最好的選擇。如果應用程序經(jīng)常在集群表上進行全表掃描,HASH集群可能也不是最好的選擇。由于需要為未來的增長分配好集群的剩余空間量,全表掃描可能非常消耗資源。在實現(xiàn)HASH集群之前一定要小心
26、。您需要全面地觀察應用程序,保證在實現(xiàn)這個選項之前已經(jīng)了解關于表和數(shù)據(jù)的大量信息。通常,HASH對于一些包含有序值的靜態(tài)數(shù)據(jù)非常有效。技巧:HASH索引在有限制條件(需要指定一個確定的值而不是一個值范圍的情況下非常有用。2.4 索引組織表索引組織表會把表的存儲結構改成B樹結構,以表的主鍵進行排序。這種特殊的表和其他類型的表一樣,可以在表上執(zhí)行所有的DML和DDL語句。由于表的特殊結構,ROWID并沒有被關聯(lián)到表的行上。對于一些涉及精確匹配和范圍搜索的語句,索引組織表提供了一種基于鍵的快速數(shù)據(jù)訪問機制?;谥麈I值的UPDATE和DELETE語句的性能也同樣得以提高,這是因為行在物理上有序。由于鍵
27、列的值在表和索引中都沒有重復,存儲所需要的空間也隨之減少。如果不會頻繁地根據(jù)主鍵列查詢數(shù)據(jù),則需要在索引組織表中的其他列上創(chuàng)建二級索引。不會頻繁根據(jù)主鍵查詢表的應用程序不會了解到使用索引組織表的全部優(yōu)點。對于總是通過對主鍵的精確匹配或范圍掃描進行訪問的表,就需要考慮使用索引組織表。技巧:可以在索引組織表上建立二級索引。2.5 反轉鍵索引當載入一些有序數(shù)據(jù)時,索引肯定會碰到與I/O相關的一些瓶頸。在數(shù)據(jù)載入期間,某部分索引和磁盤肯定會比其他部分使用頻繁得多。為了解決這個問題,可以把索引表空間存放在能夠把文件物理分割在多個磁盤上的磁盤體系結構上。為了解決這個問題,Oracle還提供了一種反轉鍵索引
28、的方法。如果數(shù)據(jù)以反轉鍵索引存儲,這些數(shù)據(jù)的值就會與原先存儲的數(shù)值相反。這樣,數(shù)據(jù)1234、1235和1236就被存儲成4321、5321和6321。結果就是索引會為每次新插入的行更新不同的索引塊。技巧:如果您的磁盤容量有限,同時還要執(zhí)行大量的有序載入,就可以使用反轉鍵索引。不可以將反轉鍵索引與位圖索引或索引組織表結合使用。因為不能對位圖索引和索引組織表進行反轉鍵處理。2.6 基于函數(shù)的索引可以在表中創(chuàng)建基于函數(shù)的索引。如果沒有基于函數(shù)的索引,任何在列上執(zhí)行了函數(shù)的查詢都不能使用這個列的索引。例如,下面的查詢就不能使用JOB列上的索引,除非它是基于函數(shù)的索引:select * from emp
29、 where UPPER(job = 'MGR'下面的查詢使用JOB列上的索引,但是它將不會返回JOB列具有Mgr或mgr值的行:select * from emp where job = 'MGR'可以創(chuàng)建這樣的索引,允許索引訪問支持基于函數(shù)的列或數(shù)據(jù)??梢詫α斜磉_式UPPER(job創(chuàng)建索引,而不是直接在JOB列上建立索引,如:create index EMP$UPPER_JOB on emp(UPPER(job;盡管基于函數(shù)的索引非常有用,但在建立它們之前必須先考慮下面一些問題:能限制在這個列上使用的函數(shù)嗎?如果能,能限制所有在這個列上執(zhí)行的所有函數(shù)嗎是否
30、有足夠應付額外索引的存儲空間?在每列上增加的索引數(shù)量會對針對該表執(zhí)行的DML語句的性能帶來何種影響?基于函數(shù)的索引非常有用,但在實現(xiàn)時必須小心。在表上創(chuàng)建的索引越多,INSERT、UPDATE和DELETE語句的執(zhí)行就會花費越多的時間。注意:對于優(yōu)化器所使用的基于函數(shù)的索引來說,必須把初始參數(shù)QUERY _REWRITE _ ENABLED設定為TRUE。示例:select count(* from sample where ratio(balance,limit >.5;Elapsed time: 20.1 minutescreate index ratio_idx1 on sampl
31、e (ratio(balance, limit;select count(* from sample where ratio(balance,limit >.5;Elapsed time: 7 seconds!2.7 分區(qū)索引分區(qū)索引就是簡單地把一個索引分成多個片斷。通過把一個索引分成多個片斷,可以訪問更小的片斷(也更快,并且可以把這些片斷分別存放在不同的磁盤驅動器上(避免I/O問題。B樹和位圖索引都可以被分區(qū),而HASH索引不可以被分區(qū)??梢杂泻脦追N分區(qū)方法:表被分區(qū)而索引未被分區(qū);表未被分區(qū)而索引被分區(qū);表和索引都被分區(qū)。不管采用哪種方法,都必須使用基于成本的優(yōu)化器。分區(qū)能夠提供更多
32、可以提高性能和可維護性的可能性有兩種類型的分區(qū)索引:本地分區(qū)索引和全局分區(qū)索引。每個類型都有兩個子類型,有前綴索引和無前綴索引。表各列上的索引可以有各種類型索引的組合。如果使用了位圖索引,就必須是本地索引。把索引分區(qū)最主要的原因是可以減少所需讀取的索引的大小,另外把分區(qū)放在不同的表空間中可以提高分區(qū)的可用性和可靠性。在使用分區(qū)后的表和索引時,Oracle還支持并行查詢和并行DML。這樣就可以同時執(zhí)行多個進程,從而加快處理這條語句??梢允褂门c表相同的分區(qū)鍵和范圍界限來對本地索引分區(qū)。每個本地索引的分區(qū)只包含了它所關聯(lián)的表分區(qū)的鍵和ROWID。本地索引可以是B樹或位圖索引。如果是B樹索引,它可以是
33、唯一或不唯一的索引。這種類型的索引支持分區(qū)獨立性,這就意味著對于單獨的分區(qū),可以進行增加、截取、刪除、分割、脫機等處理,而不用同時刪除或重建索引。Oracle自動維護這些本地索引。本地索引分區(qū)還可以被單獨重建,而其他分區(qū)不會受到影響。有前綴的索引包含了來自分區(qū)鍵的鍵,并把它們作為索引的前導。例如,讓我們再次回顧participant表。在創(chuàng)建該表后,使用survey_id和survey_date這兩個列進行范圍分區(qū),然后在survey_id列上建立一個有前綴的本地索引,如下圖所示。這個索引的所有分區(qū)都被等價劃分,就是說索引的分區(qū)都使用表的相同范圍界限來創(chuàng)建。技巧:本地的有前綴索引可以讓Orac
34、le快速剔除一些不必要的分區(qū)。也就是說沒有包含WHERE條件子句中任何值的分區(qū)將不會被訪問,這樣也提高了語句的性能。無前綴的索引并沒有把分區(qū)鍵的前導列作為索引的前導列。若使用有同樣分區(qū)鍵(survey_id和survey_date的相同分區(qū)表,建立在survey_date列上的索引就是一個本地的無前綴索引,如下圖所示。可以在表的任一列上創(chuàng)建本地無前綴索引,但索引的每個分區(qū)只包含表的相應分區(qū)的鍵值。如果要把無前綴的索引設為唯一索引,這個索引就必須包含分區(qū)鍵的子集。在這個例子中,我們必須把包含survey和(或survey_id的列進行組合(只要survey_id不是索引的第一列,它就是一個有前綴的索引。技巧:對于一個唯一的無前綴索引,它必須包含分區(qū)鍵的子集。全局分區(qū)索引在一個索引分區(qū)中包含來自多個表分區(qū)的鍵。一個全局分區(qū)索引的分區(qū)鍵是分區(qū)表中不同的或指定一個范圍的值。在創(chuàng)建全局分區(qū)索引時,必須定義分區(qū)鍵的范圍和值。全局索引只能是B樹索引。Oracle在默認情況下不會維護全局分區(qū)索引。如果一個分區(qū)被截取、增加、分割、刪除
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 增材制造技術方法
- 醫(yī)院安全用藥宣傳體系構建
- 會場安全員講解
- 醫(yī)院團委年度工作總結
- 醫(yī)院除甲醛案例分享會
- 液力噴播技術介紹
- 2025成都市房屋買賣合同書范本
- 臺風天安全知識培訓
- 單片機原理與應用 第4版 教案
- 臺球室消防安全知識培訓課件
- 架空線路拆除施工方案
- R2移動式壓力容器充裝考試試題題庫
- 2023年人教版初中七年級上冊音樂說課稿全套附音樂說課模板
- 第一單元大單元教學課件-統(tǒng)編版高中語文選擇性必修上冊
- 終止妊娠申請表
- 各類型玻璃幕墻圖解
- 2022年會寧縣教師進城考試筆試題庫及答案解析
- 地面地磚施工方案
- “三重一大”三張表格
- 煙花爆竹倉庫建設項目可行性研究報告
- 艾滋病防治知識考試題庫與答案
評論
0/150
提交評論