【數(shù)據(jù)庫基石】聚簇索引 vs 非聚簇索引:結(jié)構(gòu)圖解、性能差異與最佳實(shí)踐
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
一、核心區(qū)別概覽通過對比表快速掌握核心差異:
二、存儲結(jié)構(gòu)圖解1. 聚簇索引結(jié)構(gòu)(B+樹實(shí)現(xiàn))graph TD
A[根節(jié)點(diǎn)] --> B[非葉節(jié)點(diǎn)]
A --> C[非葉節(jié)點(diǎn)]
B --> D[葉子節(jié)點(diǎn)<br>存儲數(shù)據(jù)行]
B --> E[葉子節(jié)點(diǎn)<br>存儲數(shù)據(jù)行]
C --> F[葉子節(jié)點(diǎn)<br>存儲數(shù)據(jù)行]
C --> G[葉子節(jié)點(diǎn)<br>存儲數(shù)據(jù)行]
style D fill:#cfe2f3,stroke:#333
style E fill:#cfe2f3,stroke:#333
style F fill:#cfe2f3,stroke:#333
style G fill:#cfe2f3,stroke:#333
關(guān)鍵特征:
2. 非聚簇索引結(jié)構(gòu)(B+樹實(shí)現(xiàn))graph TD
A[根節(jié)點(diǎn)] --> B[非葉節(jié)點(diǎn)]
A --> C[非葉節(jié)點(diǎn)]
B --> D[葉子節(jié)點(diǎn)<br>鍵值+主鍵指針]
B --> E[葉子節(jié)點(diǎn)<br>鍵值+主鍵指針]
C --> F[葉子節(jié)點(diǎn)<br>鍵值+主鍵指針]
C --> G[葉子節(jié)點(diǎn)<br>鍵值+主鍵指針]
style D fill:#f9cb9c,stroke:#333
style E fill:#f9cb9c,stroke:#333
style F fill:#f9cb9c,stroke:#333
style G fill:#f9cb9c,stroke:#333
關(guān)鍵特征:
三、查詢過程對比場景:查找 |
操作 | 聚簇索引 | 非聚簇索引 | 原因分析 |
---|---|---|---|
主鍵等值查詢 | ?????????? | ?????? | 聚簇索引直達(dá)數(shù)據(jù) |
非主鍵等值查詢 | ?????? | ???????? | 非聚簇索引更高效 |
范圍查詢 | ?????????? | ?????? | 聚簇索引物理連續(xù)存儲 |
排序操作 | ???????? | ???? | 非聚簇索引需額外排序步驟 |
插入操作 | ???? | ???????? | 聚簇索引可能觸發(fā)頁分裂 |
SHOW ENGINE INNODB STATUS
)? 讓非聚簇索引升級為覆蓋索引——查詢所需字段全在索引中!
?
轉(zhuǎn)自https://www.cnblogs.com/sun-10387834/p/19010954