Oracle資料庫 索引

2021-08-09 11:43:24 字數 2207 閱讀 8662

索引是定義在儲存表基礎之上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構,由一系列儲存在磁碟上的索引項(index entries)組成,每個索引項又由兩部分構成:

索引字段:由table中某些列(通常是一列)中的值串接而成,索引中通常儲存了索引欄位的每乙個值(也有例外)。索引字段類似於詞典中的詞條。

行指標:指向table中包含索引字段值的記錄在磁碟上的儲存位置。行指標類似於詞條在詞典中出現的頁碼。

關於索引的一些概念

1.儲存索引項的檔案稱為索引檔案,相對應地,儲存表稱為主檔案

2.索引檔案是一種輔助儲存結構,其存在與否不改變儲存表的物理結構。然而它的存在可以明顯提高儲存表的訪問速度。

3.索引檔案組織方式有兩種:

排序索引檔案:按索引字段值的某一種順序組織儲存。

雜湊索引檔案:依據索引字段值使用雜湊函式分配雜湊桶的方式儲存。

4.在乙個表上可以針對不同的屬性或屬性組合建立不同的索引檔案,可建立多個索引檔案。索引欄位的值可以是table中任何乙個屬性的值或任何多個屬性值的組合值。

5.索引檔案比主檔案小很多。通過檢索乙個小的索引檔案(可全部裝載進記憶體),快速定位後,再有針對性地讀取大的主檔案中的有關記錄,來提高訪問速度,這在主檔案字段非常多的時候可以帶來很大的效能提公升。

6.有索引時,更新操作必須同步更新索引檔案和主檔案,否則根據索引查詢的結果會不正確。

關於索引應用的評價

索引技術使檢索效率大幅提高,但同時增加了儲存空間以及維護負擔(維護主檔案的同時也要維護索引檔案),這也是一種以空間換時間的方法。

衡量索引效能好壞的指標有:1.訪問時間2.插入時間3.刪除時間4.空間負載5.支援訪問的有效性(如是否支援範圍查詢)

選擇在哪些欄位上建立索引時,要綜合考慮以上指標。

應該對經常出現在檢索條件、連線條件、分組計算條件中的屬性建立索引。

幾個概念

字段:

索引字段:在索引檔案中,每個索引項對應的索引字段。

排序字段:在主檔案中,按照排序字段進行排序儲存。

碼: 關係中的碼:主碼(主鍵,primary key)具有唯一性和最小性。

索引中的碼(不一定具有唯一性):

排序碼:對主檔案進行排序儲存的那些屬性或屬性組

索引碼:即索引字段,不一定具有唯一性

搜尋碼:在主檔案中查詢記錄的屬性或屬性集

sql語言關於索引的基本知識

1.當定義table後,如果定義了主鍵,則系統自動建立主索引。

2.索引可以由使用者建立和撤銷,可以在任何屬性上建立。

3.當索引被建立後,無論是主索引,還是使用者建立的索引,dbms都將自動維護所有的索引,使其與table一致。

4.當table被刪除後,定義在該table上的所有索引將自動被撤銷。

關於索引的語句

建立索引:

create [unique] index indexname on tablename(colname [asc|desc] );
撤銷索引:

drop index indexname;
選擇哪些屬性建立索引,以及如何建立與維護索引,如何利用索引改善資料庫的執行效能,是dba的重要職責。但作為應用程式設計師也需要了解一些索引的概念和原理。

稠密索引與稀疏索引

稠密索引:對於主檔案中每個記錄,都有乙個索引項與之對應,這樣的索引稱為稠密索引。

稀疏索引:對於主檔案中部分記錄,有索引項與之對應,這樣的索引稱為稀疏索引。

那麼,稀疏索引如何定位記錄呢?

定位索引欄位為k的記錄,需要

1.首先找相鄰的小於k的最大索引字段值所對應的索引項

2.從該索引項所對應的記錄開始順序進行table檢索,找到比k大的值則結束

因此,稀疏索引要求主檔案必須按對應索引欄位的屬性進行排序儲存。

稀疏索引與稠密索引相比,空間占用更少,維護任務更輕,但速度要慢。

(未完,又留了個坑,以後補)

Oracle資料庫索引

標籤 資料庫 oracle 索引index 2013 06 14 16 54 4148人閱讀收藏 舉報 database 6 目錄 索引基本概念 索引的作用 索引的架構 oracle索引的型別 1 基於函式的索引 2 位圖索引 oracle索引的實現 索引是用於加速資料訪問的資料物件,合理的使用索引...

Oracle資料庫 索引

索引通過指標的形式提高資料查詢的速度。如果乙個資料量比較大的資料庫經常被查詢而插入刪除的次數較少,則應該建立索引,相反,小表或經常被插入或修改,則不建議建立索引。1.建立索引 create index emp phone number ix on employees phone number 2.建...

Oracle資料庫索引

建立索引 create index idx zsq on zsq01 id 將索引置為無效 alter index idx zsq unusable 重新啟用索引 三種方式 alter index idx zsq rebuild alter index idx zsq rebuild nologgi...