在 mysql 中, 索引是在儲存引擎層實現的, 所以並沒有統⼀的索引標準, 由於 innodb 儲存引擎在 mysql資料庫中使⽤最為⼴泛, 下⾯以 innodb 為例來分析⼀下其中的索引模型.在 innodb 中, 表都是根據主鍵順序以索引的形式存放的, innodb 使⽤了 b+ 樹索引模型,所以資料都是儲存在 b+ 樹中的, 如圖所示:
從圖中可以看出, 根據葉子節點內容不同,索引型別分為主鍵索引和非主鍵索引.
主鍵索引也被稱為聚簇索引,葉子節點存放的是整行資料; 而非主鍵索引被稱為二級索引,葉子節點存放的是主鍵的值.
如果根據主鍵查詢, 只需要搜尋id這顆b+樹
而如果通過非主鍵索引查詢, 需要先搜尋k索引樹, 找到對應的主鍵, 然後再到id索引樹搜尋一次, 這個過程叫做回表.
總結, 非主鍵索引的查詢需要多掃瞄一顆索引樹, 效率相對更低.
飯前思考1 主鍵索引和普通索引有什麼區別?
在mysql種,索引是在儲存引擎層實現的,所以並沒有統一的索引標準,由於innodb儲存引擎在mysql資料庫中使用 最為廣泛,下面以innodb為例來分析一下其中的索引模型,在innodb中,表都是根據主鍵順序以索引的形式存放的,innodb使用了b 樹索引模型,所以資料都是儲存在b 樹中的,如圖...
主鍵和唯一索引有什麼區別
create tabel t id int create unique index t index id on t id 和create tabel t id int primary key 主鍵是表中的乙個或多個字段,它的值用於惟一地標識表中的某一條記錄.使用索引可快速訪問資料庫表中的特定資訊。索...
MySQL普通索引和唯一索引到底什麼區別
普通索引可重複,唯一索引和主鍵一樣不能重複。唯一索引可作為資料的乙個合法驗證手段,例如學生表的身份證號碼字段,我們人為規定該欄位不得重複,那麼就使用唯一索引。一般設定學號字段為主鍵 主鍵保證db的每一行都是唯 一 不重複,比如身份證,學號等,不重複。唯一索引的作用跟主鍵一樣。不同的是,在一張表裡面只...