mysql 執行計劃

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

聯合索引遵循最左原則

一下幾種情況不會走索引

  1. 使用 like 語句時,%在右邊纔會使用索引。
    沒用使用索引

    使用索引
  2. or 條件中有未建立索引的列才,索引失效
    沒用使用索引

    使用索引
  3. 條件的類型不一致
    沒用使用索引

    使用索引
  4. != 號
    沒用使用索引

    例外:如果是主鍵,則會走索引
  5. > 號
    沒用使用索引

    例外:如果是主鍵或索引是整數類型,則會走索引
  6. order by
    沒用使用索引

    例外:如果 order by 是主鍵或索引是整數類型,則會走索引
  7. 組合索引
    遵循最左前綴

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章