主鍵索引和普通索引有什麼區別?

  在 MySQL 中, 索引是在存儲引擎層實現的, 所以並沒有統⼀的索引標準, 由於 InnoDB 存儲引擎在 MySQL數據庫中使⽤最爲⼴泛, 下⾯以 InnoDB 爲例來分析⼀下其中的索引模型.在 InnoDB 中, 表都是根據主鍵順序以索引的形式存放的, InnoDB 使⽤了 B+ 樹索引模型,所以數據都是存儲在 B+ 樹中的, 如圖所示:
在這裏插入圖片描述
從圖中可以看出, 根據葉子節點內容不同,索引類型分爲主鍵索引和非主鍵索引.
主鍵索引也被稱爲聚簇索引,葉子節點存放的是整行數據; 而非主鍵索引被稱爲二級索引,葉子節點存放的是主鍵的值.
如果根據主鍵查詢, 只需要搜索ID這顆B+樹
而如果通過非主鍵索引查詢, 需要先搜索k索引樹, 找到對應的主鍵, 然後再到ID索引樹搜索一次, 這個過程叫做回表.
總結, 非主鍵索引的查詢需要多掃描一顆索引樹, 效率相對更低.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章