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.可以把相關資料儲存在一起。例如實現...