舉例介紹一下MySQL資料庫 InnoDb中的 Clustered Index 和 Secondary Index

MySQL InnoDb中的 Clustered Index 和 Secondary Index

clustered index

TheInnoDBterm for aprimary keyindex.InnoDBtable storage is organized based on the values of the primary key columns, to speed up queries and sorts involving the primary key columns. For best performance, choose the primary key columns carefully based on the most performance-critical queries. Because modifying the columns of the clustered index is an expensive operation, choose primary columns that are rarely or never updated.

In the Oracle Database product, this type of table is known as anindex-organized table.

clustered index其實就是promary key的另外一種說法。

MySQL InnoDb中的索引分為Clustered Index (聚簇索引)和 Secondary Index(二級索引)

Clustered Index:

每一個InnoDB表都有一個特殊的索引,叫做clustered index,通常來講,clustered index和primary key是同一個意思,InnoDB選擇clustered index原則如下:

-如果表上設定瞭primary key,則使用primary key作為clustered index

-如果沒有設定primary key,選擇第一個非空的UNIQUE索引作為clustered index。所以,如果表隻有一個非空的UNIQUE索引,那麼InnoDB就把它當作主健瞭。

-如果即沒有primary key,也沒有合適的UNIQUE索引,InnoDB內部產生一個隱藏列,這個列包含瞭每一行的row ID, row ID隨著新行的插入而單調增加。然後在這個隱藏列上建立索引作為clustered index。

Secondary Index:

除瞭Clustered Index之外的索引都是Secondary Index,每一個Secondary Index的記錄中除瞭索引列的值之外,還包含主健值。通過二級索引查詢首先查到是主鍵值,然後InnoDB再根據查到的主鍵值通過主鍵/聚簇索引找到相應的數據塊。

發佈留言