Oracle 和 DB2,比較與相容性/儲存模型/索引
索引是效能結構。通常,索引可以加快對資料的訪問速度。索引的工作原理類似於目錄——它以一種可以快速找到所需條目的方式進行組織。索引的作用物件是表中列的內容。當您使用索引時,資料庫將掃描排序的索引以定位您需要的資料。如果您有多個索引,它實際上可能會影響資料庫效能,因為每次資料發生變化(插入、更新和刪除)時都需要維護每個索引。僅僅因為索引是一件好事,就像生活中任何事物一樣,它們也會物極必反;您可能會擁有過多好事。
在某些情況下,索引可能不是訪問資料的最快方法。如果您的表非常小,讀取整個表以獲取所需的條目比先讀取索引然後讀取資料更快。如果它是基於成本的最佳化器的任務來決定是否使用索引。如果您確信您想要查詢使用特定索引,您可以使用提示覆蓋最佳化器。
Oracle 和 DB2 都具有唯一索引、非唯一索引和複合索引,並且以幾乎相同的方式處理它們。兩者都使用平衡的 B 樹索引來提供對錶中任何行的平等訪問。B 樹針對讀取和寫入大量資料塊的系統(即資料庫和檔案系統)進行了最佳化。B 樹是一種樹狀資料結構,它保持資料的排序,並允許搜尋、順序訪問、插入和刪除。B 樹透過要求所有葉節點都處於相同的深度來保持平衡。隨著元素新增到樹中,該深度會增加,但整體深度不會增加太多。
唯一索引保證索引中沒有兩列具有相同的值。為每個表的每個主鍵自動建立唯一索引。這確保每行都有一個唯一的識別符號。
非唯一索引允許索引中的列具有相同的值。一個簡單的例子是,在姓氏上建立索引。然後,您可以訪問所有姓氏為“Smith”的人。
複合索引由多個列組成。這在表中的兩個列經常一起訪問時很有用。
以下關於 Oracle 和 DB2 的部分涵蓋了它們如何以不同的方式處理索引。摘要包含了每個 DBMS 如何處理聚簇的概述,在大多數情況下,這取決於索引。