mysql優化之覆蓋索引

2021-10-10 04:27:06 字數 1472 閱讀 3379

1、當發起乙個被索引覆蓋的查詢時,在explain的extra列可以看到using index的資訊,此時就使用了覆蓋索引

mysql>

explain

select store_id,film_id from inventory\g**

****

****

****

****

****

****

*1.row***

****

****

****

****

****

****

id: 1

select_type: ******

table: inventory

partitions: null

type: index

possible_keys: null

key: idx_store_id_film_id

key_len: 3

ref: null

rows: 4581

filtered: 100.00

extra: using

index

1row

inset

,1 warning (

0.01 sec)

2、在大多數儲存引擎中,覆蓋索引只能覆蓋那些只訪問索引中部分列的查詢。不過,可以進一步的進行優化,可以使用innodb的二級索引來覆蓋查詢。

例如:actor使用innodb儲存引擎,並在last_name欄位又二級索引,雖然該索引的列不包括主鍵actor_id,但也能夠用於對actor_id做覆蓋查詢

mysql>

explain

select actor_id,last_name from actor where last_name=

'hopper'\g**

****

****

****

****

****

****

*1.row***

****

****

****

****

****

****

id: 1

select_type: ******

table: actor

partitions: null

type: ref

possible_keys: idx_actor_last_name

key: idx_actor_last_name

key_len: 137

ref: const

rows: 2

filtered: 100.00

extra: using

index

1row

inset

,1 warning (

0.00 sec)

mysql索引 之覆蓋索引

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

mysql 優化(4)索引覆蓋和最優索引

索引覆蓋 很重要的 乙個概念 就是在索引上查詢!如果查詢的列恰好是索引的一部分,那麼查詢只需要在索引檔案上進行 不需要回行到磁碟再找資料.這種查詢速度非常快,稱為 索引覆蓋 非聚促索引 索引檔案對應了資料要回行 浪費掉了時間 索引和資料區別 索引是高效組織起來的樹 節點 查詢樹葉 結構更優於資料 索...

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

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