mysql執行計劃 const eq_ref ref range index all

explain:查詢查詢性能或者須要查看使用索引狀態
sql

1、type:鏈接類型  最關鍵的一列  效率(const>eq_ref>ref>range>index>all)性能

一、const:查詢索引字段,而且表中最多隻有一行匹配(好像只有主鍵查詢只匹配一行纔會是const,有些狀況惟一索引匹配一行會是ref)優化

二、eq_ref    主鍵或者惟一索引  .net

三、ref   非惟一索引(主鍵也是惟一索引)blog

四、range  索引的範圍查詢排序

五、index  (type=index extra = using index 表明索引覆蓋,即不須要回表)索引

六、all 全表掃描(一般沒有建索引的列)內存

2、key_lentable

索引的長度,在不損失精度的狀況下越短越好效率

3、ref

4、rows (內循環的次數)

 

5、extra

重要的幾個

一、using temporary(組合查詢返回的數據量太大須要創建一個臨時表存儲數據,出現這個sql應該優化)

二、using where (where查詢條件)

三、using index(判斷是否僅使用索引查詢,使用索引樹而且不須要回表查詢)

四、using filesort(order by 太佔內存,使用文件排序)

瞭解的幾個

一、const row not found(聽說是當表爲空的時候展現,我用了個空表explain以後發現extra列是空值)

二、deleting all rows (MYISAM存儲引擎快速清空表)

三、first_match(select * from a where name in(select a_name from B) ,B中有n條記錄都記錄了同一個a_name,每一個a_name都只會匹配一次。exist也有一樣的效果)

四、impossible having, impssible where  (錯誤的having 和where如,where 1<0)

五、Impossible WHERE noticed after reading const tables(如 where id =1 and name = "temp",表中不存在id=1而且name=temp的記錄)

 

附帶一個詳細的extra連接:https://blog.csdn.net/poxiaonie/article/details/77757471

相關文章
相關標籤/搜索