溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

explain中怎么查看執(zhí)行計(jì)劃

發(fā)布時(shí)間:2021-07-26 16:07:11 來源:億速云 閱讀:228 作者:Leah 欄目:數(shù)據(jù)庫

explain中怎么查看執(zhí)行計(jì)劃,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

explain內(nèi)容

查看user全表查詢的執(zhí)行計(jì)劃:

mysql> explain select * from user;

 explain中怎么查看執(zhí)行計(jì)劃

id

id表示select查詢語句的執(zhí)行順序或者是操作表的執(zhí)行順序。

id的值有二種情況:

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. id相同,表示執(zhí)行的順序是由上至下

  3. id不同,id的序號(hào)會(huì)是遞增的,id的值越大表示優(yōu)先級(jí)越高,越先被執(zhí)行。

select_type

select_type表示查詢類型,它的值域?yàn)椋篠IMPLE、PRIMARY、SUBQUERY、DERIVED、UNION、UNION  RESULT。

  • SIMPLE:簡單的查詢,不包含子查詢和UNION。

  • PRIMARY:如果查詢的語句中包含了復(fù)雜的子查詢,那么最外層的查詢被標(biāo)記為PRIMARY。

  • SUBQUERY:select或者where中的子查詢。

  • DERIVED:from列表中的子查詢生成的衍生表查詢。

  • UNION:聯(lián)合查詢。

  • UNION RESULT:從UNION表獲取結(jié)果的查詢。

table

數(shù)據(jù)行是從哪個(gè)表獲取的。

type

表示查詢使用了哪種類型,它的值域:ALL、index、range、ref、eq_ref、const、system。這是我們優(yōu)化時(shí)重點(diǎn)關(guān)注的一個(gè)指標(biāo)。

從最好到最差排序:

system>const>eq_ref>ref>range>index>ALL。

阿里巴巴SQL優(yōu)化規(guī)范:

  • 【推薦】 SQL性能優(yōu)化的目標(biāo):至少要達(dá)到 range 級(jí)別,要求是ref級(jí)別,如果可以是const最好。

  • 說明:

  • 1)const 單表中最多只有一個(gè)匹配行(主鍵或者唯一索引),在優(yōu)化階段即可讀取到數(shù)據(jù)。

  • 2)ref 指的是使用普通的索引(normal index)。

  • 3)range 對(duì)索引進(jìn)行范圍檢索。

system:表中只有一行記錄的查詢,類似系統(tǒng)表。

eq_ref:多表時(shí)唯一索引掃描,對(duì)于每一個(gè)索引,表中只有一行記錄相匹配。

index:索引物理文件全掃描,速度比較慢,比全表掃描性能好一點(diǎn)。

ALL:全表掃描。

possible_keys

可能應(yīng)用在這個(gè)表的索引,可以會(huì)一個(gè)或者多個(gè),不一定是實(shí)際查詢使用的索引。

key

查詢中實(shí)際使用的索引,如果為null表示沒有使用索引。

如果是覆蓋索引,則只顯示在key中。

key_len

表示索引字段的最大可能長度,并不是實(shí)際的長度,它是根據(jù)表定義得到的,而不是通過表檢索得到的。長度越短越好。

ref

表示索引的哪一列被使用了,可能是個(gè)常數(shù)。哪些列或者常量被用于查找索引列上的值。

rows

根據(jù)表的信息和索引使用情況,大致估算的查找到所需的記錄需要掃描的行數(shù)。越小越好。

Extra

擴(kuò)展信息。

阿里巴巴SQL優(yōu)化規(guī)范:

  • 【推薦】利用覆蓋索引來進(jìn)行查詢操作,避免回表。

  • 說明:如果一本書需要知道第11章是什么標(biāo)題,會(huì)翻開第11章對(duì)應(yīng)的那一頁嗎?目錄瀏覽一下就好,這個(gè)目錄就是起到覆蓋索引的作用。

  • 正例:能夠建立索引的種類分為主鍵索引、唯一索引、普通索引三種,而覆蓋索引只是一種查詢的一種效果,用explain的結(jié)果,extra列會(huì)出現(xiàn):using  index。

這里提到了覆蓋索引,extra列會(huì)出現(xiàn)using index。

extra還有其他比較重要的信息:

using filesort:用到了外部的索引排序,即MySQL無法利用索引完成排序。

using temptory:使用了臨時(shí)表。

using where:使用了where過濾。

關(guān)于explain中怎么查看執(zhí)行計(jì)劃問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI