MySQL 9.0 版本資訊
每個 InnoDB
資料表都有一個稱為叢集索引的特殊索引,用於儲存列資料。通常,叢集索引與主索引鍵同義。為了從查詢、插入和其他資料庫操作獲得最佳效能,了解 InnoDB
如何使用叢集索引來最佳化常見的查詢和 DML 操作非常重要。
當您在資料表上定義
PRIMARY KEY
時,InnoDB
會將其用作叢集索引。應為每個資料表定義主索引鍵。如果沒有邏輯上的唯一且非 NULL 的資料行或一組資料行可用作主索引鍵,請加入自動遞增的資料行。自動遞增的資料行值是唯一的,並會在插入新列時自動新增。如果您未為資料表定義
PRIMARY KEY
,InnoDB
會使用第一個所有索引鍵資料行都定義為NOT NULL
的UNIQUE
索引作為叢集索引。如果資料表沒有
PRIMARY KEY
或合適的UNIQUE
索引,InnoDB
會在包含列 ID 值的合成資料行上產生一個名為GEN_CLUST_INDEX
的隱藏叢集索引。列會依InnoDB
指派的列 ID 排序。列 ID 是一個 6 位元組欄位,會在插入新列時單調增加。因此,依列 ID 排序的列在實體上會依插入順序排列。
透過叢集索引存取列的速度很快,因為索引搜尋會直接導向包含列資料的頁面。如果資料表很大,相較於使用與索引記錄不同的頁面來儲存列資料的儲存組織,叢集索引架構通常會節省磁碟 I/O 操作。
叢集索引以外的索引稱為輔助索引。在 InnoDB
中,輔助索引中的每個記錄都包含列的主索引鍵資料行,以及為輔助索引指定的資料行。InnoDB
使用此主索引鍵值來搜尋叢集索引中的列。
如果主索引鍵很長,輔助索引會使用更多空間,因此使用短的主索引鍵會比較有利。
如需利用 InnoDB
叢集和輔助索引的指引,請參閱第 10.3 節「最佳化與索引」。