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