文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man 頁面 (TGZ) - 258.5Kb
Man 頁面 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  叢集索引和輔助索引

17.6.2.1 叢集索引和輔助索引

每個 InnoDB 資料表都有一個特殊的索引,稱為叢集索引,用於儲存列資料。通常,叢集索引與主鍵同義。為了從查詢、插入和其他資料庫操作中獲得最佳效能,了解 InnoDB 如何使用叢集索引來最佳化常見的查找和 DML 操作非常重要。

  • 當您在資料表上定義 PRIMARY KEY 時,InnoDB 會將其用作叢集索引。每個資料表都應定義一個主鍵。如果沒有邏輯上唯一且非 Null 的欄或欄集可用作主鍵,請新增自動遞增欄。自動遞增欄值是唯一的,並且在插入新列時會自動新增。

  • 如果您沒有為資料表定義 PRIMARY KEYInnoDB 會使用第一個將所有索引鍵欄定義為 NOT NULLUNIQUE 索引作為叢集索引。

  • 如果資料表沒有 PRIMARY KEY 或合適的 UNIQUE 索引,InnoDB 會在包含列 ID 值的合成欄上產生一個名為 GEN_CLUST_INDEX 的隱藏叢集索引。列會依 InnoDB 指派的列 ID 排序。列 ID 是一個 6 位元組的欄位,會隨著插入新列而單調遞增。因此,依列 ID 排序的列實際上是依插入順序排列的。

叢集索引如何加快查詢速度

透過叢集索引存取列的速度很快,因為索引搜尋會直接導向包含列資料的頁面。如果資料表很大,與使用與索引記錄不同的頁面儲存列資料的儲存組織相比,叢集索引架構通常會節省磁碟 I/O 作業。

輔助索引如何與叢集索引相關

除了叢集索引之外的索引稱為次要索引。在 InnoDB 中,次要索引中的每個記錄都包含該列的主鍵欄位,以及為次要索引指定的欄位。InnoDB 使用此主鍵值在叢集索引中搜尋該列。

如果主鍵很長,次要索引會使用更多空間,因此擁有較短的主鍵是有利的。

關於如何利用 InnoDB 叢集索引和次要索引的指南,請參閱第 10.3 節「最佳化與索引」