聚簇索引與非聚簇索引概念
阿新 • • 發佈:2022-03-08
索引根據底層實現可分為B-Tree索引和雜湊索引,大部分時候我們使用的都是B-Tree索引,因為它良好的效能和特性更適合於構建高併發系統。
根據索引的儲存方式來劃分,索引可以分為聚簇索引和非聚簇索引。聚簇索引的特點是葉子節點包含了完整的記錄行,而非聚簇索引的葉子節點只有所以欄位和主鍵ID。
根據聚簇索引和非聚簇索引還能繼續下分還能分為普通索引、覆蓋索引、唯一索引以及聯合索引等。
聚簇索引也叫聚集索引,它實際上並不是一種單獨的索引型別,而是一種資料儲存方式,聚簇索引的葉子節點儲存了一行記錄的所有列資訊。也就是說,聚簇索引的葉子節點中,包含了一個完整的記錄行。
非聚簇索引也叫輔助索引、普通索引,它的葉子節點只包含一個主鍵值,通過非聚簇索引查詢記錄要先找到主鍵,然後通過主鍵再到聚簇索引中找到對應的記錄行,這個過程被稱為回表 。
在mysql資料庫中,myisam引擎和innodb引擎使用的索引型別不同,myisam對應的是非聚簇索引,而innodb對應的是聚簇索引。聚簇索引也叫複合索引、聚集索引等等。
聚簇索引:“聚簇”的意思是資料行被按照一定順序一個個緊密地排列在一起儲存。一個表只能有一個聚簇索引,因為在一個表中資料的存放方式只有一種。
非聚簇索引:又叫二級索引。二級索引的葉子節點中儲存的不是指向行的物理指標,而是行的主鍵值。當通過二級索引查詢行,儲存引擎需要在二級索引中找到相應的葉子節點,獲得行的主鍵值,然後使用主鍵去聚簇索引中查詢資料行,這需要兩次B-Tree查詢。