<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搞懂 MySQL Explain 命令之前不要說自己會(huì)SQL優(yōu)化

          共 2185字,需瀏覽 5分鐘

           ·

          2021-12-29 09:18

          高廣超,https://www.jianshu.com/p/ea3fc71fdc45

          MySQL?explain?命令是查詢性能優(yōu)化不可缺少的一部分,該文主要講解 explain 命令的使用及相關(guān)參數(shù)說明。

          explain 命令基本使用

          在日常工作中,我們會(huì)有時(shí)會(huì)開慢查詢?nèi)ビ涗浺恍﹫?zhí)行時(shí)間比較久的 SQL 語句,找出這些 SQL 語句并不意味著完事了。

          此時(shí)我們常常用到 explain 這個(gè)命令來查看一個(gè)這些 SQL 語句的執(zhí)行計(jì)劃,查看該 SQL 語句有沒有使用上了索引,有沒有做全表掃描。

          mysql>?explain?select?*?from?servers;
          +----+-------------+---------+------+---------------+------+---------+------+------+-------+
          |?id?|?select_type?|?table???|?type?|?possible_keys?|?key??|?key_len?|?ref??|?rows?|?Extra?|
          +----+-------------+---------+------+---------------+------+---------+------+------+-------+
          |??1?|?SIMPLE??????|?servers?|?ALL??|?NULL??????????|?NULL?|?NULL????|?NULL?|????1?|?NULL??|
          +----+-------------+---------+------+---------------+------+---------+------+------+-------+
          1?row?in?set?(0.03?sec)

          expain 出來的信息有 10 列,分別是 id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra,下面對(duì)這些字段出現(xiàn)的可能進(jìn)行解釋:

          EXPLAIN Output Columns

          id

          id 是用來順序標(biāo)識(shí)整個(gè)查詢中 SELELCT 語句的,在嵌套查詢中 id 越大的語句越先執(zhí)行。該值可能為 NULL,如果這一行用來說明的是其他行的聯(lián)合結(jié)果。

          select_type

          表示查詢的類型

          table

          對(duì)應(yīng)行正在訪問哪一個(gè)表,表名或者別名

          • 關(guān)聯(lián)優(yōu)化器會(huì)為查詢選擇關(guān)聯(lián)順序,左側(cè)深度優(yōu)先
          • 當(dāng) from 中有子查詢的時(shí)候,表名是 derivedN 的形式,N 指向子查詢,也就是 explain 結(jié)果中的下一列
          • 當(dāng)有 union result 的時(shí)候,表名是 union 1,2 等的形式,1,2 表示參與 union 的 query id

          注意:MySQL 對(duì)待這些表和普通表一樣,但是這些“臨時(shí)表”是沒有任何索引的。

          type

          type 顯示的是訪問類型,是較為重要的一個(gè)指標(biāo),結(jié)果值從好到壞依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般來說,得保證查詢至少達(dá)到 range 級(jí)別,最好能達(dá)到 ref。

          possible_keys

          顯示查詢使用了哪些索引,表示該索引可以進(jìn)行高效地查找,但是列出來的索引對(duì)于后續(xù)優(yōu)化過程可能是沒有用的

          key

          key 列顯示 MySQL 實(shí)際決定使用的鍵(索引)。如果沒有選擇索引,鍵是 NULL。要想強(qiáng)制 MySQL 使用或忽視 possible_keys 列中的索引,在查詢中使用 FORCE INDEX、USE INDEX 或者 IGNORE INDEX。

          key_len

          key_len 列顯示 MySQL 決定使用的鍵長度。如果鍵是 NULL,則長度為 NULL。使用的索引的長度。在不損失精確性的情況下,長度越短越好 。

          ref

          ref 列顯示使用哪個(gè)列或常數(shù)與 key 一起從表中選擇行。

          rows

          rows 列顯示 MySQL 認(rèn)為它執(zhí)行查詢時(shí)必須檢查的行數(shù)。注意這是一個(gè)預(yù)估值。

          Extra

          Extra 是 EXPLAIN 輸出中另外一個(gè)很重要的列,該列顯示 MySQL 在查詢過程中的一些詳細(xì)信息,MySQL 查詢優(yōu)化器執(zhí)行查詢的過程中對(duì)查詢計(jì)劃的重要補(bǔ)充信息。

          參考資料

          1. 《高性能 mysql 第三版》

          2. ?https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

          3. ?https://www.cnblogs.com/xuanzhi201111/p/4175635.html

          圖解系列文章:
          圖解文章匯總
          計(jì)算機(jī)基礎(chǔ)學(xué)習(xí)路線
          小林的圖解系統(tǒng),大曝光!
          不鴿了,小林的「圖解網(wǎng)絡(luò) 3.0 」發(fā)布!
          為了拿捏 Redis 數(shù)據(jù)結(jié)構(gòu),我畫了 40 張圖(完整版)
          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品爽爽久久久 | 狠狠狠狠狠狠艹 | 一级黄色影片 | 精品秘 无码一区二区三区老师 | 九色丨蝌蚪丨成人 |