mysql二級索引需要回表 聚簇索引和二級索引

2021-10-18 21:56:58 字數 891 閱讀 2071

innodb中,在聚簇索引之上建立的索引稱之為輔助索引,非聚簇索引都是輔助索引

innodb引擎通過搜尋樹方式實現索引,索引型別分為主鍵索引(聚集索引)和 二級索引(非主鍵索引)

主鍵索引樹中,葉子結點儲存著主鍵即對應行的全部資料

二級索引樹中,葉子結點儲存著索引值和主鍵值(先通過普通索引定位到主鍵值id=5;在通過主鍵索引定位到行記錄;這個過程會有回表查詢)

當使用二級索引進行查詢時,需要進行回表操作

覆蓋索引: 查詢的列和查詢條件的列全部包含在乙個索引中,可以直接使用索引查詢而不需要回表。這就是覆蓋索引

覆蓋索引是指索引中的列包含了資料處理中涉及的所有列,覆蓋索引相當原始表的乙個子集

通過使用覆蓋索引,可以減少搜尋樹的次數,是常用的效能優化手段

例1:name是乙個索引:select id from table where name = aaa

由於name索引樹的葉子結點上儲存有username和id的值,通過name索引樹查詢到id後 就不需要在主鍵索引去查詢了

例2:name是乙個索引:select pwd from user_table where name = aaa

1、name索引樹上找到name=aaa對應的主鍵id

2、通過回表在主鍵索引樹上找到滿足條件的資料

可以組建聯合索引(name, pwd),這樣,查詢的時候就不需要再去回表操作了,可以提高查詢效率

題外字首索引:

mysql的b+樹索引遵循「最左字首」原則

聯合索引(username,pwd)注意查詢順序

例1:where username like 『張%『"

原文:

聚簇索引和二級索引

前言 前面提到的innodb的頁目錄就是聚簇索引的一部分,但當有無數個頁的資料,頁目錄無法降低查詢的複雜度,所以引入了更加合適的索引 採用b 樹建立索引 常見的innodb儲存引擎就採用b 樹建立聚簇索引和二級索引。b 樹的特點 1 最底層葉子節點,存放資料。innodb存放真實的一行資料,myis...

聚簇索引與非聚簇索引(二級索引)的區別

聚簇索引 將資料儲存與索引放在一塊,找到索引也就找到了資料。非聚簇索引 將資料儲存與索引分開,索引結構的葉子節點指向資料的對應行。myisam通過key buffer把索引先快取在記憶體中,訪問資料時,在記憶體中直接搜尋索引,然後通過索引找到磁碟對應資料。注意 innodb中,在聚簇索引之上建立的索...

mysql 聚簇索引表 Mysql的聚簇索引

聚簇索引並不是一種單獨的索引型別,而是一種資料儲存方式。innodb的聚簇索引實際上是在同乙個結構中儲存了b tree索引和資料行。乙個表只能有乙個聚簇索引。innodb中,葉子頁包含了行的全部資料,但是節點頁只包含了索引列。innodb通過主鍵聚集資料。優點 1.可以把相關資料儲存在一起。例如實現...