MySQL中explain輸出詳解

MySQL中explain輸出詳解
  1. id列
    id列的序號是select語句的編號,id越大執(zhí)行的優(yōu)先級就越高赤炒,可能會出現(xiàn)相同id的情況氯析,這時按照id分組,id相同時按照從上到下的順序執(zhí)行莺褒,如果id為空則最后執(zhí)行

  2. select_type列
    表示對應(yīng)數(shù)據(jù)的查詢類型掩缓,可能的情況有:

    • simple:不包含子查詢和union的簡單查詢

    • primary:復(fù)雜查詢中的最外層查詢

    • subquery:包含在select中的子查詢(不在from子句中)

    • derived:包含在from子句中的子查詢,對于這種查詢類型遵岩,MySQL會將結(jié)果集放在一個臨時表中你辣,也叫做衍生表

    • union:表示使用union連接后的查詢語句,union result表示合并的結(jié)果

  3. table列
    表示當(dāng)前查詢訪問的是哪張表尘执。當(dāng)from子句中有子查詢時舍哄,table的輸出格式為“<derivedN>”,其中誊锭,N代表id列的值表悬,表示當(dāng)前語句依賴id=N的查詢,所以先執(zhí)行id=N的語句炉旷,如果使用EXPLAIN分析帶有子查詢的語句table列卻沒有相似輸出签孔,那是因為優(yōu)化對臨時表做了優(yōu)化,只需要關(guān)閉這個優(yōu)化選項就可以看見了窘行,示例如下

    set session optimizer_switch = 'derived_merge=off'; #關(guān)閉優(yōu)化器對臨時表的合并優(yōu)化
    EXPLAIN SELECT * FROM (SELECT * FROM table_xxx WHERE id = '1580133829666242561') t;
    set session optimizer_switch = 'derived_merge=on'; #執(zhí)行完開啟優(yōu)化器對臨時表的合并優(yōu)化
    
  4. partitions列
    表示查詢數(shù)據(jù)的分區(qū)饥追,對于非分區(qū)表,列值為null

  5. type列
    這是比較重要的一列信息罐盔,表示關(guān)聯(lián)類型或訪問類型但绕,訪問效率從高到低分別是 system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL,一般情況下要求SQL達到range級別惶看,甚至是ref

    • ALL:全表掃描
    • index:全索引掃描捏顺,主要有兩種情況,一是我們需要的數(shù)據(jù)就在索引中纬黎,可以直接獲取幅骄,二是使用索引進行排序
    • range:表示利用索引查詢的時候限制了范圍,在指定范圍內(nèi)進行查詢本今,這樣避免了index的全索引掃描拆座,適用的操作符: =, <>, >, >=, <, <=, IS NULL, BETWEEN, LIKE, or IN()
    • index_subquery:利用索引來關(guān)聯(lián)子查詢主巍,不再掃描全表
    • unique_subquery:該連接類型類似與index_subquery,使用的是唯一索引
    • index_merge:在查詢過程中需要多個索引組合使用
    • ref_or_null:對于某個字段即需要關(guān)聯(lián)條件挪凑,也需要null值的情況下孕索,查詢優(yōu)化器會選擇這種訪問方式
    • ref:使用了非唯一性索引進行數(shù)據(jù)的查找
    • eq_ref :使用唯一性索引進行數(shù)據(jù)查找
    • const:這個表至多有一個匹配行
    • system:表只有一行記錄(等于系統(tǒng)表),這是const類型的特例躏碳,平時不會出現(xiàn)
  6. possible_keys列

    顯示可能應(yīng)用在這張表中的索引搞旭,一個或多個,查詢涉及到的字段上若存在索引菇绵,則該索引將被列出肄渗,但不一定被查詢實際使用

  7. key
    實際使用的索引,如果為null脸甘,則沒有使用索引恳啥,查詢中若使用了覆蓋索引,則該索引和查詢的select字段重疊

  8. key_len
    表示索引中使用的字節(jié)數(shù)丹诀,可以通過key_len計算查詢中使用的索引長度钝的,在不損失精度的情況下長度越短越好

  9. ref:此列顯示key列記錄的索引中,表查找值時使用到的列或常量铆遭。常見的有const硝桩、字段名

  10. rows:此列是MySQL在查詢中估計要讀取的行數(shù)。注意這里不是結(jié)果集的行數(shù)

  11. filtered:通過過濾條件之后對比總數(shù)的百分比

  12. extra:額外信息

    • Using filesort:當(dāng)Query中包含 order by 操作枚荣,而且無法利用索引完成的排序操作稱為“文件排序”
    • using temporary:建立臨時表來保存中間結(jié)果碗脊,查詢完成之后把臨時表刪除
    • Using where:不用讀取表中所有信息,僅通過索引就可以獲取所需數(shù)據(jù)橄妆,這發(fā)生在對表的全部的請求列都是同一個索引的部分的時候衙伶,表示mysql服務(wù)器將在存儲引擎檢索行后再進行過濾
    • Using temporary:表示MySQL需要使用臨時表來存儲結(jié)果集,常見于排序和分組查詢害碾,常見 group by ; order by
    • Using join buffer:改值強調(diào)了在獲取連接條件時沒有使用索引矢劲,并且需要連接緩沖區(qū)來存儲中間結(jié)果。如果出現(xiàn)了這個值慌随,那應(yīng)該注意芬沉,根據(jù)查詢的具體情況可能需要添加索引來改進能
    • Impossible where:這個值強調(diào)了where語句會導(dǎo)致沒有符合條件的行(通過收集統(tǒng)計信息不可能存在結(jié)果)
    • Select tables optimized away:這個值意味著僅通過使用索引,優(yōu)化器可能僅從聚合函數(shù)結(jié)果中返回一行
    • No tables used:Query語句中使用from dual 或不含任何from子句
    • using index:表示使用到了索引 , 并且所取的數(shù)據(jù)完全在索引中就能拿到
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載阁猜,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者丸逸。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市剃袍,隨后出現(xiàn)的幾起案子黄刚,更是在濱河造成了極大的恐慌,老刑警劉巖民效,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憔维,死亡現(xiàn)場離奇詭異侍芝,居然都是意外死亡,警方通過查閱死者的電腦和手機埋同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棵红,“玉大人凶赁,你說我怎么就攤上這事∧嫣穑” “怎么了虱肄?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長交煞。 經(jīng)常有香客問我咏窿,道長,這世上最難降的妖魔是什么素征? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任集嵌,我火速辦了婚禮,結(jié)果婚禮上御毅,老公的妹妹穿的比我還像新娘根欧。我一直安慰自己,他們只是感情好端蛆,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布凤粗。 她就那樣靜靜地躺著,像睡著了一般今豆。 火紅的嫁衣襯著肌膚如雪嫌拣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天呆躲,我揣著相機與錄音异逐,去河邊找鬼。 笑死歼秽,一個胖子當(dāng)著我的面吹牛应役,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播燥筷,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼箩祥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肆氓?” 一聲冷哼從身側(cè)響起袍祖,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谢揪,沒想到半個月后蕉陋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捐凭,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年凳鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了茁肠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡缩举,死狀恐怖垦梆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仅孩,我是刑警寧澤托猩,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站辽慕,受9級特大地震影響京腥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜溅蛉,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一公浪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧船侧,春花似錦因悲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至琐鲁,卻和暖如春卫旱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背围段。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工顾翼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奈泪。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓适贸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涝桅。 傳聞我的和親對象是個殘疾皇子拜姿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容