在oracle資料庫中,索引按照索引機制的不同,可以分為三種。
1. b-tree索引 b-tree index
應用場景: oltp 使用比較多,處理鍵值重複率比較低的字段比較適合使用b-tree索引,處理效率極高。反之當鍵值重複率很高時,b-tree索引的效率會非常的低效。
在oracle中主鍵會預設加上b-tree索引。在oracle的主鍵和唯一性約束上 使用b-tree索引
b-tree索引又可以分為:唯一索引、組合索引、反向鍵索引、基於函式的索引。
唯一鍵索引:1、唯一鍵索引確保在定義的索引列中沒有重複值, 2、oracle自動在表的主鍵列上建立唯一鍵索引。 3、使用create unique index語句建立唯一鍵索引。
組合索引: 1、組合索引在表的多個列上建立的索引。2、索引中列的順序是任意的。3、如果sql語句的where子句中引用了組合索引的所有列或大多數列,則可以提高檢索速度。
反向鍵索引:1、反向鍵索引反轉索引列鍵值的每個位元組。2、通常建立在列的值是連續增值的,目的是為了使資料能夠均勻的分布在整索引上。3、建立時使用reverse關鍵字。
基於函式的索引:1、基於乙個或多個列上的函式或表示式建立的索引。2、表示式中不能出現聚合函式。3、不能在lob型別的列上建立。4、建立時必須有query rewrite許可權。
2. 位圖索引 bitmap index
應用場景:1)處理鍵值重複率比較高的字段比較適合使用。2)比b-tree索引更節省空間。3)在olap系統中使用比較頻繁。當乙個表上某個(幾個)欄位的數值有明顯的大量重複時,比如欄位是國家、地區、性別(世界上,或者該字段為其他的一些標識性資訊。4)特定型別的查詢下效能很高。比如,要對乙個結果集進行count操作,特別是在sql語句的條件部分,在很多字段之間存在著邏輯「與」、「或」運算的查詢方式。
劣勢:1、索引列上不適合頻繁的進行dml操作。2、值重複率比較低的情況不適合使用。 3、 位圖索引適合在資料倉儲中使用,在oltp中不常使用。
create bitmap index index_name on table_name(column_name);
3. 全文索引 text index
應用場合: 屬於資料倉儲範疇,在oltp系統中使用並不廣泛。全文索引的優點在於可以對詞彙的進行快速搜尋。
劣勢 :全文索引要 占用 大量的空間
context型別的全文索引是 不基於事務的 無法 實現資料和索引同步。
海量資料處理 倒排索引
在資訊大 的今天,有了搜尋引擎的幫助,使得我們能夠快速,便捷的找到所求。提到搜尋引擎,就不得不說vsm模型,說到vsm,就不得不聊倒排索引。可以毫不誇張的講,倒排索引是搜尋引擎的基石。vsm全稱是vector space model 向量空間模型 是ir information retrieval資...
海量資料處理
1 有一千萬條簡訊,有重複,以文字檔案的形式儲存,一行一條,有 重複。請用5分鐘時間,找出重複出現最多的前10條。方法1 可以用雜湊表的方法對1千萬條分成若干組進行邊掃瞄邊建雜湊表。第一次掃瞄,取首位元組,尾位元組,中間隨便兩位元組作為hash code,插入到hash table中。並記錄其位址和...
海量資料處理
給定a b兩個檔案,各存放50億個url,每個url各占用64位元組,記憶體限制是4g,如何找出a b檔案共同的url?答案 可以估計每個檔案的大小為5g 64 300g,遠大於4g。所以不可能將其完全載入到記憶體中處理。考慮採取分而治之的方法。遍歷檔案a,對每個url求取hash url 1000...