MySQL 索引 覆蓋索引

2021-09-27 07:45:17 字數 787 閱讀 2783

1.什麼是覆蓋索引

概念:查詢語句中所需要的列在索引中,這樣查詢結果在索引的資料結構中查詢即可拿到結果。

附加網友解釋:

2.形成覆蓋索引的條件

索引分為多種型別,從資料結構上分為 二叉樹、紅黑樹、 hash索引、b-tree索引,b+tree(mysql使用的儲存結構)

索引的實現可以使用多種資料結構,這裡使用b-tree和b+tree的索引能實現覆蓋索引。

3.如何檢視是否使用了覆蓋索引?

使用explain命令,通過檢視extra列可以看到using index的資訊,證明使用了覆蓋索引

4.如何使用覆蓋索引優化sql
先扯出來乙個概念

回表:先索引掃瞄,再通過id去查表資料,取索引中未能提供的資料,即為回表。

簡單來說就是資料庫根據索引找到了指定的記錄所在行後,還需要根據rowid再次到資料塊裡取資料的操作

如何避免回表?

條件允許的情況下,使用聯合索引

5.總結

對於覆蓋索引,通過聯合索引可能實現覆蓋索引,但是該情況只限於對於所需的查詢列比較少的情況,所需的查詢列比較多的情況,不可能全部實現聯合索引,所以不能實現覆蓋索引。

MySQL覆蓋索引呼叫 MySQL 覆蓋索引

什麼是覆蓋索引 建立乙個索引,該索引包含查詢中用到的所有字段,稱為 覆蓋索引 使用覆蓋索引,mysql 只需要通過索引就可以查詢和返回查詢所需要的資料,而不必在使用索引處理資料之後再進行回表操作。覆蓋索引可以一次性完成查詢工作,有效減少io,提高查詢效率。使用示例 查詢語句 select col2,...

mysql覆蓋索引 MySQL 的覆蓋索引與回表

兩大類索引 使用的儲存引擎 mysql5.7 innodb 聚簇索引 如果表設定了主鍵,則主鍵就是聚簇索引 如果表沒有主鍵,則會預設第乙個not null,且唯一 unique 的列作為聚簇索引 以上都沒有,則會預設建立乙個隱藏的row id作為聚簇索引 innodb的聚簇索引的葉子節點儲存的是行記...

mysql索引 之覆蓋索引

今天參考了 高效能mysql 與幾篇博文,總結一下我個人的對覆蓋索引的理解。首先,覆蓋索引並不是一種新的資料結構,它的意思是在查詢的時候,利用到的索引已經完全包含需要查詢欄位的情況,在這種情況下,查詢結果直接就是索引的值,並不需要再利用索引回表查詢了。繼續拿sakila資料庫 mysql安裝好後自帶...