DBMS索引


在DBMS中索引 -

  • 索參照於通過最小化處理查詢時所需的磁碟存取次數來優化資料庫的效能。
  • 索引是一種資料結構。它用於快速定位和存取資料庫表中的資料。

索引結構

可以使用某些資料庫列建立索引。

  • 資料庫的第一列是搜尋鍵,它包含表的主鍵或候選鍵的副本。主鍵的值按排序順序儲存,以便可以輕鬆存取相應的資料。
  • 資料庫的第二列是資料參照。 它包含一組指標,用於儲存磁碟塊的地址,可以在其中找到特定鍵的值。

索引方法

有序索引

通常對索引進行排序以使搜尋更快,排序索引稱為有序索引。
範例: 假設有一個包含幾千條記錄的employee表,每條記錄的長度為10個位元組。 如果它們的ID是以1,2,3 ......等開頭,那麼如果要使用ID為543來搜尋學生的資訊。

  • 對於沒有索引的資料庫,需要從磁碟塊開始搜尋直到543。 DBMS將在讀取543 * 10 = 5430位元組後讀取記錄。
  • 在索引的情況下,直接使用索引進行搜尋,DBMS將在讀取542 * 2 = 1084位元組後讀取記錄,這與前一種情況相比非常少。

主鍵

  • 如果索引是基於表的主鍵建立的,那麼它被稱為主索引。 這些主鍵對於每個記錄都是唯一的,並且在記錄之間包含1:1的關係。
  • 由於主鍵按排序順序儲存,因此搜尋操作的效能非常高效。
  • 主索引可以分為兩種型別:密集索引和稀疏索引。

密集索引

  • 密集索引包含資料檔案中每個搜尋鍵值的索引記錄,它使搜尋更快。
  • 在此,索引表中的記錄數與主表中的記錄數相同。
  • 它需要更多的空間來儲存索引記錄本身。索引記錄具有搜尋鍵和指向磁碟上實際記錄的指標。

稀疏索引

在資料檔案中,索引記錄僅針對少數專案出現。 每個專案都指向一個區塊。
在此,索引不是指向主表中的每個記錄,而是指向間隙中主表中的記錄。

聚類索引

  • 聚簇索引可以定義為有序資料檔案。 有時,索引是在非主鍵列上建立的,對於每個記錄可能不是唯一的。
  • 在這種情況下,為了更快地識別記錄,將對兩列或更多列進行分組以獲取唯一值並從中建立索引。此方法稱為聚類索引。
  • 對具有相似特徵的記錄進行分組,並為這些組建立索引。

範例: 假設公司在每個部門中包含多個員工。假設使用聚簇索引,其中屬於同一Dept_ID的所有員工都被視為在單個叢集中,並且索引指標指向整個叢集。 這裡Dept_ID是一個非唯一鍵。

之前的架構很容易混淆,因為一個磁碟塊由屬於不同叢集的記錄共用。如果為單獨的叢集使用單獨的磁碟塊,那麼它是一種更好的技術。

二級索引

在稀疏索引中,隨著表的大小增加,對映的大小也會增加。 這些對映通常儲存在主記憶體儲器中,因此地址獲取應該更快。 然後,輔助儲存器根據從對映獲得的地址搜尋實際資料。 如果對映大小增加,那麼獲取地址本身會變慢。 在這種情況下,稀疏索引效率不高。 為了克服這個問題,引入了二級索引。

在二級索引中,為了減小對映的大小,引入了另一級索引。 在該方法中,最初選擇列的巨大範圍,使得第一級對映變小。 然後將每個範圍進一步劃分為更小的範圍。 第一級的對映儲存在主記憶體儲器中,因此地址獲取更快。 第二級和實際資料的對映儲存在輔助儲存器(硬碟)中。

範例:

  • 如果要在圖中找到捲111的記錄,則它將搜尋第一級索引中小於或等於111的最高條目。 這個級別將達到100
  • 然後在二級索引級別,它再次執行max(111)<= 111並獲得110。現在使用地址是:110,它進入資料塊並開始搜尋每個記錄,直到它達到111
  • 這是在此方法中執行搜尋的方式。插入,更新或刪除也以相同的方式完成。