十一 explain屬性介紹

2021-10-09 20:01:58 字數 1967 閱讀 2329

explain簡介

explain 命令是檢視查詢優化器如何決定執行查詢的主要方法,使用explain,只需要在查詢中的select關鍵字之前增加explain這個詞即可,mysql會在查詢上設定乙個標記,當執行查詢時,這個標記會使其返回關於在執行計畫中每一步的資訊,而不是執行它,它會返回一行或多行資訊,顯示出執行計畫中的每一部分和執行的次序,從而可以從分析結果中找到查詢語句或是表結構的效能瓶頸。

explain能幹嘛

分析出表的讀取順序

資料讀取操作的操作型別

哪些索引可以使用

哪些索引被實際使用

表之間的引用

每張表有多少行被優化器查詢    

explain如何用

explain + sql語句即可,如下:

explain結果引數含義1.id:id代表執行select子句或操作表的順序,例如,上述的執行結果代表只有一次執行而且執行順序是第一(因為只有乙個id為1的執行結果),id分別有三種不同的執行結果,分別如下:

2.select_type

查詢的型別,主要用於區別普通查詢,聯合查詢,子查詢等複雜查詢

3.table

顯示一行的資料時關於哪張表的

4.type

查詢型別從最好到最差依次是:system>const>eq_ref>ref>range>index>all,一般情況下,得至少保證達到range級別,最好能達到ref

5.possible_keys

顯示可能應用在這張表中的索引,乙個或多個,查詢到的索引不一定是真正被用到的

6.key

實際使用的索引,如果為null,則沒有使用索引,因此會出現possible_keys列有可能被用到的索引,但是key列為null,表示實際沒用索引。

7.key_len

表示索引中使用的位元組數,而通過該列計算查詢中使用的 索引長度,在不損失精確性的情況下,長度越短越好,key_len顯示的值為索引欄位的最大可能長度,並非實際使用長度,即,key_len是根據表定義計算而得麼不是通過表內檢索出的

8.ref

顯示索引的哪一列被使用了,如果可能的話是乙個常數,哪些列或常量被用於查詢索引列上的值

9.rows

根據表統計資訊及索引選用情況,大只估算出找到所需的記錄所需要讀取的行數

10.extra

select * from t1 where id='1' and id='2';
在沒有groupby子句的情況下,基於索引優化min/max操作或者對於myisam儲存引擎優化count(*)操作,不必等到執行階段再進行計算,查詢執行計畫生成的階段即完成優化。

重點:

type:訪問型別,檢視sql到底是以何種型別訪問資料的。

key:使用的索引,mysql用了哪個索引,有時候mysql用的索引不是最好的,需要force index()。

rows:最大掃瞄的列數。

extra:重要的額外資訊,特別注意損耗效能的兩個情況,using filesort和using temporary。

explain各個屬性含義

查詢的序列號 查詢的型別,主要是區別普通查詢和聯合查詢 子查詢之類的複雜查詢 輸出的行所引用的表 訪問型別 從左至右,效能由差到好 表示查詢時可能使用的索引。如果是空的,沒有相關的索引。這時要提高效能,可通過檢驗where子句,看是否引用某些字段,或者檢查字段不是適合索引 顯示mysql實際決定使用...

C 屬性介紹

屬性 get set public class person set 屬性可以忽略get或set訪問器,但是不能兩個都忽略 set訪問器包含乙個隱藏的引數value,該引數包含從客戶 傳送過來的值 公共屬性及其底層型別最好使用相同的名稱,因為它們之間的聯絡將很清晰 字段使用camelcase xx ...

NGUI UICamera屬性介紹

ngui uicamera param use mouse 決定camera是否會響應滑鼠事件。use touch decide camera 是否會響應觸控事件。use keyboard 是否響應鍵盤事件。onkey傳送 use controller 是否允許傳送遊戲手柄事件 onkey傳送 ev...