日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Mysql explain 执行计划 解释

發(fā)布時(shí)間:2023/12/18 数据库 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql explain 执行计划 解释 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一:Mysql explain 執(zhí)行計(jì)劃

前言:
使用 explain 執(zhí)行sql計(jì)劃,以便分析Sql執(zhí)行過(guò)程 涉及多少行、使用哪些索引、運(yùn)行時(shí)間等 以便進(jìn)行優(yōu)化。
如:

explain 名詞解釋:

字段含義
idSQL執(zhí)行的順序的標(biāo)識(shí),SQL從大到小的執(zhí)行

說(shuō)明: id 不同連接類型的解釋

  • id相同時(shí),執(zhí)行順序由上至下

  • 如果是子查詢,id的序號(hào)會(huì)遞增,id值越大優(yōu)先級(jí)越高,越先被執(zhí)行

  • id如果相同,可以認(rèn)為是一組,從上往下順序執(zhí)行;在所有組中,id值越大,優(yōu)先級(jí)越高,越先執(zhí)行

  • 字段含義
    table顯示這一行的數(shù)據(jù)是關(guān)于哪張表的
    select_type查詢中每個(gè)select子句的類型

    說(shuō)明: select_type 不同連接類型的解釋

  • SIMPLE: 簡(jiǎn)單SELECT,不使用UNION或子查詢等
  • PRIMARY:查詢中若包含任何復(fù)雜的子部分,最外層的select被標(biāo)記為PRIMARY
  • UNION:UNION中的第二個(gè)或后面的SELECT語(yǔ)句
  • DEPENDENT UNION:UNION中的第二個(gè)或后面的SELECT語(yǔ)句,取決于外面的查詢
  • UNION RESULT: UNION的結(jié)果
  • SUBQUERY: 子查詢中的第一個(gè)SELECT
  • DEPENDENT SUBQUERY: 子查詢中的第一個(gè)SELECT,取決于外面的查詢
  • DERIVED: 派生表的SELECT, FROM子句的子查詢
  • UNCACHEABLE SUBQUERY: 一個(gè)子查詢的結(jié)果不能被緩存,必須重新評(píng)估外鏈接的第一行
  • 字段含義
    type這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、indexhe和ALL

    說(shuō)明: type 不同連接類型的解釋(按照效率高低的順序排序)

  • system:表只有一行:system表。這是const連接類型的特殊情況。
  • const :表中的一個(gè)記錄的最大值能夠匹配這個(gè)查詢(索引可以是主鍵或惟一索引)。因?yàn)橹挥幸恍?#xff0c;這個(gè)值實(shí)際就是常數(shù),因?yàn)镸YSQL先讀這個(gè)值然后把它當(dāng)做常數(shù)來(lái)對(duì)待。
  • eq_ref:在連接中,MYSQL在查詢時(shí),從前面的表中,對(duì)每一個(gè)記錄的聯(lián)合都從表中讀取一個(gè)記錄,它在查詢使用了索引為主鍵或惟一鍵的全部時(shí)使用。
  • ref:這個(gè)連接類型只有在查詢使用了不是惟一或主鍵的鍵或者是這些類型的部分(比如,利用最左邊前綴)時(shí)發(fā)生。對(duì)于之前的表的每一個(gè)行聯(lián)合,全部記錄都將從表中讀出。這個(gè)類型嚴(yán)重依賴于根據(jù)索引匹配的記錄多少—越少越好。
  • range:這個(gè)連接類型使用索引返回一個(gè)范圍中的行,比如使用>或<查找東西時(shí)發(fā)生的情況。
  • index:這個(gè)連接類型對(duì)前面的表中的每一個(gè)記錄聯(lián)合進(jìn)行完全掃描(比ALL更好,因?yàn)樗饕话阈∮诒頂?shù)據(jù))。
  • ALL: 這個(gè)連接類型對(duì)于前面的每一個(gè)記錄聯(lián)合進(jìn)行完全掃描,這一般比較糟糕,應(yīng)該盡量避免。
  • 字段含義
    possible_keys顯示可能應(yīng)用在這張表中的索引。如果為空,沒(méi)有可能的索引。可以為相關(guān)的域從WHERE語(yǔ)句中選擇一個(gè)合適的語(yǔ)句
    key實(shí)際使用的索引。如果為NULL,則沒(méi)有使用索引。很少的情況下,MYSQL會(huì)選擇優(yōu)化不足的索引。這種情況下,可以在SELECT語(yǔ)句中使用USE INDEX(indexname)來(lái)強(qiáng)制使用一個(gè)索引或者用IGNORE INDEX(indexname)來(lái)強(qiáng)制MYSQL忽略索引
    key_len使用的索引的長(zhǎng)度。在不損失精確性的情況下,長(zhǎng)度越短越好
    ref顯示索引的哪一列被使用了,如果可能的話,是一個(gè)常數(shù)
    rowsMYSQL認(rèn)為必須檢查的用來(lái)返回請(qǐng)求數(shù)據(jù)的行數(shù)
    Extra關(guān)于MYSQL如何解析查詢的額外信息。將在表4.3中討論,但這里可以看到的壞的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,結(jié)果是檢索會(huì)很慢

    說(shuō)明:extra列返回的描述的意義

  • Distinct :一旦mysql找到了與行相聯(lián)合匹配的行,就不再搜索了。

  • Not exists :mysql優(yōu)化了LEFT JOIN,一旦它找到了匹配LEFT JOIN標(biāo)準(zhǔn)的行,就不再搜索了。
    Range checked for each Record(index map:#) :沒(méi)有找到理想的索引,因此對(duì)從前面表中來(lái)的每一個(gè)行組合,mysql檢查使用哪個(gè)索引,并用它來(lái)從表中返回行。這是使用索引的最慢的連接之一。

  • Using filesort :看到這個(gè)的時(shí)候,查詢就需要優(yōu)化了。mysql需要進(jìn)行額外的步驟來(lái)發(fā)現(xiàn)如何對(duì)返回的行排序。它根據(jù)連接類型以及存儲(chǔ)排序鍵值和匹配條件的全部行的行指針來(lái)排序全部行。

  • Using index :列數(shù)據(jù)是從僅僅使用了索引中的信息而沒(méi)有讀取實(shí)際的行動(dòng)的表返回的,這發(fā)生在對(duì)表的全部的請(qǐng)求列都是同一個(gè)索引的部分的時(shí)候。

  • Using where:表示優(yōu)化器需要通過(guò)索引回表查詢數(shù)據(jù);

  • Using where && Using index:自己認(rèn)為:Using index 不讀數(shù)據(jù)文件,只從索引文件中獲取數(shù)據(jù)。Using where 只是過(guò)濾元組

  • Using temporary :看到這個(gè)的時(shí)候,查詢需要優(yōu)化了。這里,mysql需要?jiǎng)?chuàng)建一個(gè)臨時(shí)表來(lái)存儲(chǔ)結(jié)果,這通常發(fā)生在對(duì)不同的列集進(jìn)行ORDER BY上,而不是GROUP BY上。 當(dāng)使用 DISTINCT 關(guān)鍵字 也會(huì)出現(xiàn)該狀態(tài)

  • Where used :使用了WHERE從句來(lái)限制哪些行將與下一張表匹配或者是返回給用戶。如果不想返回表中的全部行,并且連接類型ALL或index,這就會(huì)發(fā)生,或者是查詢有問(wèn)題。

  • 什么是:索引回表?

    如果索引的列在select子句中則不需要回表。
    如果 select 子句中有大量的非索引列,就要讀取索引存放對(duì)應(yīng)的rowid,然后按照 rowid 去表中找到對(duì)應(yīng)行的非索引列,這就叫回表

    總結(jié)

    以上是生活随笔為你收集整理的Mysql explain 执行计划 解释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。