定義
一直對聚簇索引的概念不是很清晰。之前的理解(包括網(wǎng)路上的解釋),聚簇索引和非聚簇索引的區(qū)別是:
葉子節(jié)點是否存放一整行記錄
以mysql為例:
- innodb引擎,主鍵使用的是聚簇索引,非主鍵使用的是非聚簇索引。
- myisam引擎,不管主鍵還是非主鍵,使用的都是非聚簇索引。
聚簇索引與非聚簇索引.png
并且還給了如上的示意圖。
但是我一直對這個解釋存疑,不能直觀的把聚簇索引的定義和innodb的主鍵聚簇索引聯(lián)系在一起。
直到我讀到了[數(shù)據(jù)庫系統(tǒng)內(nèi)幕]這本書中對聚簇索引的:
書中還詳細講解到:聚簇索引中的數(shù)據(jù)記錄,通常與索引存儲于同一個文件中,有時也存放在單獨的聚簇文件中,而這些文件均保留了鍵的順序。如果數(shù)據(jù)存儲在單獨的文件中,且其順序不遵循鍵順序,則索引為非聚簇索引。
參考
[數(shù)據(jù)庫系統(tǒng)內(nèi)幕] 2020-05第一版 p23