飯前思考1 主鍵索引和普通索引有什麼區別?

2022-09-21 20:39:21 字數 574 閱讀 1752

在mysql種,索引是在儲存引擎層實現的,所以並沒有統一的索引標準,由於innodb儲存引擎在mysql資料庫中使用

最為廣泛,下面以innodb為例來分析一下其中的索引模型,在innodb中,表都是根據主鍵順序以索引的形式存放的,

innodb使用了b+樹索引模型,所以資料都是儲存在b+樹中的,如圖:

從圖中可以看出,根據葉子節點內容不同,索引型別分為主鍵索引和非主鍵索引。

主鍵索引也被稱為聚簇索引,葉子節點存放的是整行資料;而非主鍵索引被稱為二級索引,葉子節點存放的是

主鍵的值。

如果根據主鍵查詢,只需要搜尋id這顆b+tree

而如果通過非主鍵索引查詢,需要先搜尋k索引樹,找到對應的主鍵,然後再到id索引樹搜尋一次,

這個過程叫做回表。

總結,非主鍵索引的查詢需要多掃瞄一顆索引樹,效率相對更低。

lower 非主鍵索引 先搜尋k索引樹 再搜尋id主鍵索引tree, k索引樹可以理解為索引標識的字段

power 主鍵索引

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

在 mysql 中,索引是在儲存引擎層實現的,所以並沒有統 的索引標準,由於 innodb 儲存引擎在 mysql資料庫中使 最為 泛,下 以 innodb 為例來分析 下其中的索引模型.在 innodb 中,表都是根據主鍵順序以索引的形式存放的,innodb 使 了 b 樹索引模型,所以資料都是儲...

普通索引 唯一索引 主鍵索引 候選索引

1 普通索引 1 定義 最基本的索引型別,沒有唯一性之類的限制。2 建立方式 a 建立索引,例如create index 索引的名字 on tablename 列的列表 b 修改表,例如alter table tablename add index 索引的名字 列的列表 c 建立表的時候指定索引,例...

普通索引和唯一索引的思考

這裡是修真院小課堂,本篇分析的主題是 普通索引和唯一索引的思考 索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。從資料搜尋實現的角度來看,索引也是另外一類檔案 記錄,它包含著可以指示出相關資料記錄的各種記錄。在了解資料庫索引之前,首先了解一下資料庫索引的資...