最近,資料庫索引的主題已經出現了好幾次,特別是在資料庫索引的缺點和資料庫索引對寫入作業的影響文章中。這兩篇文章都提及一個事實,就是關聯式資料庫支援多種索引類型。今天的文章將提供一個最常見索引類型的概述。
資料庫索引的作用
在關聯式資料庫管理系統(Relational Database Management Systems,RDBMS)中,索引是一種特殊的物件,允許使用者從資料庫中快速擷取記錄。通常,索引被實作為只有兩欄的查閱資料表:第一欄包含資料表的主索引鍵或候選索引鍵的副本;第二欄包含一組指針,用於保存儲存了特定鍵值的磁碟區塊的地址。
兩種索引方法
索引類型可以根據其索引屬性進行分類。這些分為主要索引和次要索引兩大類。
主要索引是一個有排序檔案,其記錄具有固定長度和兩個欄位。索引的第一個欄位按順序複製資料檔案的主索引鍵,第二個欄位包含一個指針,指向包含該鍵的記錄可用的資料區塊。
次要索引是儲存主索引鍵值而不是儲存指向資料的指針的索引。其優點是,透過主索引鍵存取資料,不需要任何額外的資料查閱,因為你需要的所有資料都可以在主索引鍵的分葉頁中找到。
DBMS 中的次要索引可以由一個欄位產生,該欄位對每筆記錄都有一個唯一的值,並且應該是一個候選索引鍵。它也被稱為非叢集索引。這種兩層資料庫索引技術用於減少第一層的對應大小。
密集索引與稀疏索引
在密集索引中,為資料庫中的每個搜尋鍵建立一筆記錄。這有助於加快搜尋速度,但需要更多空間來儲存索引記錄。在這種索引方法中,記錄包含搜尋鍵值並指向磁碟上的真實記錄。
稀疏索引是僅針對檔案中的某些值出現的索引記錄。稀疏索引可幫助你解決 DBMS 中的密集索引問題。在這種索引方法中,一系列索引欄儲存相同的資料區塊地址,當需要擷取資料時,將擷取區塊地址。由於稀疏索引只儲存某些搜尋鍵值的索引記錄,因此它需要的空間更少,插入和刪除的維護負擔也更少。缺點是,與密集索引相比,它們查找記錄的速度較慢。
主要索引和次要索引範例
在 Navicat 中,作為「主索引鍵」一部分的欄位可在資料表設計器的「欄位」索引標籤中找到:
資料表通常需要次要索引,以便使用者可以搜尋不屬於主索引鍵的欄位。在 Navicat 中,所有次要索引都列在「索引」索引標籤中:
當按一下「解釋」按鈕,我們可以看到資料庫用於擷取特定査詢的記錄的索引:
總結
這篇文章概述了最常見的 RDBMS 索引類型,並提供了一個使用 Navicat Premium 的範例。如果你對 Navicat Premium 感興趣,可以免費試用 14 天!
Rob Gravelle 居住於加拿大渥太華,是一名有 20 多年經驗的 IT 專家。過住,Rob 曾為情報相關的組織(如加拿大邊境服務局和各種商業組織)建置系統。在業餘時間,Rob 是一名出色的吉他演奏家,並擁有多張 CD和數位發行。