explain + sql
Type類型及區別
type | 說明 |
---|---|
ALL | 全數據表掃描 |
index | 全索引表掃描 |
RANGE | 對索引列進行範圍查找 |
INDEX_MERGE | 合併索引,使用多個單列索引搜索 |
REF | 根據索引查找一個或多個值 |
EQ_REF | 搜索時使用primary key 或 unique類型 |
CONST | 常量,表最多有一個匹配行,因爲僅有一行,在這行的列值可被優化器剩餘部分認爲是常數,const表很快,因爲它們只讀取一次。 |
SYSTEM | 系統,表僅有一行(=系統表)。這是const聯接類型的一個特例。 |
性能:all
< index
< range
< index_merge
< ref_or_null
< ref
< eq_ref
< system/const
聯合索引遵循最左原則
一下幾種情況不會走索引
- 使用 like 語句時,%在右邊纔會使用索引。
沒用使用索引
使用索引
- or 條件中有未建立索引的列才,索引失效
沒用使用索引
使用索引
- 條件的類型不一致
沒用使用索引
使用索引
- != 號
沒用使用索引
例外:如果是主鍵,則會走索引 - > 號
沒用使用索引
例外:如果是主鍵或索引是整數類型,則會走索引 - order by
沒用使用索引
例外:如果 order by 是主鍵或索引是整數類型,則會走索引 - 組合索引
遵循最左前綴