數(shù)據(jù)庫索引定義和類型

數(shù)據(jù)庫索引類型及實現(xiàn)方式

1、索引定義

數(shù)據(jù)庫索引好比是一本書前面的目錄,能加快數(shù)據(jù)庫的查詢速度。索引是對數(shù)據(jù)庫表中一個或多個列(例如,employee表的姓氏(lname)列)的值進行排序的結(jié)構(gòu)。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助于更快地獲取信息。

2、建立索引的優(yōu)缺點:

優(yōu)點:1.大大加快數(shù)據(jù)的檢索速度;

2.創(chuàng)建唯一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性;

3.加速表和表之間的連接;

4.在使用分組和排序子句進行數(shù)據(jù)檢索時,可以顯著減少查詢中分組和排序的時間。

缺點:

1.索引需要占用數(shù)據(jù)表以外的物理存儲空間

2.創(chuàng)建索引和維護索引要花費一定的時間

3.當(dāng)對表進行更新操作時,索引需要被重建,這樣降低了數(shù)據(jù)的維護速度。

索引類型:

根據(jù)數(shù)據(jù)庫的功能,可以在數(shù)據(jù)庫設(shè)計器中創(chuàng)建索引:唯一索引、主鍵索引和聚集索引。 盡管唯一索引有助于定位信息,但為獲得最佳性能結(jié)果,建議改用主鍵或唯一約束。

4、索引的實現(xiàn)方式

1B+樹

我們經(jīng)常聽到B+樹就是這個概念,用這個樹的目的和紅黑樹差不多,也是為了盡量保持樹的平衡,當(dāng)然紅黑樹是二叉樹,但B+樹就不是二叉樹了,節(jié)點下面可以有多個子節(jié)點,數(shù)據(jù)庫開發(fā)商會設(shè)置子節(jié)點數(shù)的一個最大值,這個值不會太小,所以B+樹一般來說比較矮胖,而紅黑樹就比較瘦高了。

關(guān)于B+樹的插入,刪除,會涉及到一些算法以保持樹的平衡,這里就不詳述了。ORACLE的默認索引就是這種結(jié)構(gòu)的。

如果經(jīng)常需要同時對兩個字段進行AND查詢,那么使用兩個單獨索引不如建立一個復(fù)合索引,因為兩個單獨索引通常數(shù)據(jù)庫只能使用其中一個,而使用復(fù)合索引因為索引本身就對應(yīng)到兩個字段上的,效率會有很大提高。

2散列索引

第二種索引叫做散列索引,就是通過散列函數(shù)來定位的一種索引,不過很少有單獨使用散列索引的,反而是散列文件組織用的比較多。

散列文件組織就是根據(jù)一個鍵通過散列計算把對應(yīng)的記錄都放到同一個槽中,這樣的話相同的鍵值對應(yīng)的記錄就一定是放在同一個文件里了,也就減少了文件讀取的次數(shù),提高了效率。

散列索引呢就是根據(jù)對應(yīng)鍵的散列碼來找到最終的索引項的技術(shù),其實和B樹就差不多了,也就是一種索引之上的二級輔助索引,我理解散列索引都是二級或更高級的稀疏索引,否則桶就太多了,效率也不會很高。

3位圖索引

位圖索引是一種針對多個字段的簡單查詢設(shè)計一種特殊的索引,適用范圍比較小,只適用于字段值固定并且值的種類很少的情況,比如性別,只能有男和女,或者級別,狀態(tài)等等,并且只有在同時對多個這樣的字段查詢時才能體現(xiàn)出位圖的優(yōu)勢。

位圖的基本思想就是對每一個條件都用0或者1來表示,如有5條記錄,性別分別是男,女,男,男,女,那么如果使用位圖索引就會建立兩個位圖,對應(yīng)男的10110和對應(yīng)女的01001,這樣做有什么好處呢,就是如果同時對多個這種類型的字段進行and或or查詢時,可以使用按位與和按位或來直接得到結(jié)果了。

B+樹最常用,性能也不差,用于范圍查詢和單值查詢都可以。特別是范圍查詢,非得用B+樹這種順序的才可以了。

HASH的如果只是對單值查詢的話速度會比B+樹快一點,但是ORACLE好像不支持HASH索引,只支持HASH表空間。

位圖的使用情況很局限,只有很少的情況才能用,一定要確定真正適合使用這種索引才用(值的類型很少并且需要復(fù)合查詢),否則建立一大堆位圖就一點意義都沒有了。

唯一索引:UNIQUE例如:create unique index stusno on student(sno);

表明此索引的每一個索引值只對應(yīng)唯一的數(shù)據(jù)記錄,對于單列惟一性索引,這保證單列不包含重復(fù)的值。對于多列惟一性索引,保證多個值的組合不重復(fù)。

主鍵索引:primary key

數(shù)據(jù)庫表經(jīng)常有一列或列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。在數(shù)據(jù)庫關(guān)系圖中為表定義主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當(dāng)在查詢中使用主鍵索引時,它還允許對數(shù)據(jù)的快速訪問。聚集索引(也叫聚簇索引):cluster

在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數(shù)據(jù)訪問速度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容