文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  叢集索引與輔助索引

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 節「最佳化與索引」