国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL explain

這篇具有很好參考價(jià)值的文章主要介紹了MySQL explain。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

簡(jiǎn)介

mysql explain(或desc)用于分析SQL語(yǔ)句的執(zhí)行計(jì)劃,多用于測(cè)試查詢性能。語(yǔ)法:explain sql...

注意

  1. explain執(zhí)行DML語(yǔ)句,數(shù)據(jù)不發(fā)生變化。
  2. explain執(zhí)行的結(jié)果可以有多條數(shù)據(jù),一條數(shù)據(jù)對(duì)應(yīng)一個(gè)表,如果涉及union,MySQL內(nèi)部會(huì)產(chǎn)生一個(gè)臨時(shí)表,就會(huì)導(dǎo)致結(jié)果多一行數(shù)據(jù)。
  3. union all不會(huì)創(chuàng)建臨時(shí)表,所以就不會(huì)有多一行的數(shù)據(jù)。

id

這是select編號(hào),不是返回結(jié)果的自增id。
值越大優(yōu)先級(jí)越高。
如果涉及多表join,id就會(huì)重復(fù),因?yàn)榫鸵粋€(gè)select。
涉及子查詢,MySQL Server 優(yōu)化器 可能會(huì)把子查詢轉(zhuǎn)化為join,所以聯(lián)調(diào)select id可能都是1
涉及union,臨時(shí)表的那一列,id值為null。

select_type

操作類型,包括簡(jiǎn)單表查詢、聯(lián)合查詢、子查詢等。

  • SIMPLE: 簡(jiǎn)單表查詢,不包含union或者子查詢。
  • PRIMARY: 主查詢,復(fù)雜查詢中的最外層查詢,或者union中左邊的表。
  • SUBQUERY: 不相關(guān)子查詢
  • DEPENDENT SUBQUERY: 依賴外部查詢的子查詢,或者稱之為相關(guān)子查詢。
  • DERIVED: 派生表,從查詢結(jié)果派生的臨時(shí)表,from后面的子查詢。
  • UNION: UNION 查詢中各個(gè)子查詢的操作類型。
  • UNION RESULT: UNION 查詢的結(jié)果集。
  • DEPENDENT UNION: 依賴外部查詢的 UNION 查詢,也就是子查詢中有union
  • UNCACHEABLE SUBQUERY: 無(wú)法被緩存的子查詢。
  • UNCACHEABLE UNION: 無(wú)法被緩存的 UNION 查詢。

table

被操作的表,用于顯示被操作的對(duì)象。
實(shí)際表名:表示查詢語(yǔ)句中直接引用的表名。

  • <derivedN>:表示派生表,它是從查詢結(jié)果中派生出來(lái)的臨時(shí)表,派生表的編號(hào)可能是 1、2、3 等。
  • <unionM-N>:表示 UNION 查詢中的結(jié)果集,其中 M 表示結(jié)果集的編號(hào),N 表示 UNION 查詢中的子查詢編號(hào)。
  • <temporary>:表示臨時(shí)表,這是在查詢過(guò)程中創(chuàng)建的臨時(shí)存儲(chǔ)表。
  • <subqueryN>:表示子查詢結(jié)果,其中 N 是子查詢的編號(hào)。

partitions

分析 MySQL 查詢語(yǔ)句如何利用分區(qū)表的工具,可以查看 MySQL 執(zhí)行查詢時(shí)會(huì)涉及到哪些分區(qū),以及查詢優(yōu)化器如何選擇分區(qū)來(lái)執(zhí)行查詢。

type

返回在執(zhí)行查詢時(shí)使用的訪問(wèn)方法,和索引相關(guān), 已做排序。

  • system,當(dāng)使用MyiSAM或Memory引擎的表只有一條記錄的時(shí)候是system,不要奢望。
  • const:使用主鍵索引,或唯一索引等值匹配。
  • eq_ref:使用join時(shí),被驅(qū)動(dòng)表通過(guò)主鍵或者唯一索引列進(jìn)行等值關(guān)聯(lián)的方式,例如select * from a left join b on a.id = b.id;,b是eq_ref,a是all。
  • ref: 使用非唯一索引等值匹配。
  • range:對(duì)添加過(guò)任意索引的列,進(jìn)行范圍匹配,<、<=、>、>=、in、between。
  • index:MySQL 使用索引來(lái)掃描整個(gè)索引樹(shù),不需要回表,通常會(huì)發(fā)生在覆蓋索引的情況。
  • ALL:全表掃描。

不常見(jiàn)類型:

  • fulltext:全文索引。
  • ref_or_null:對(duì)二級(jí)索引進(jìn)行等值匹配,并添加or = null的條件。
  • index_merge:使用了多個(gè)單列索引來(lái)執(zhí)行查詢。當(dāng)在查詢條件中存在多個(gè)列,且每個(gè)列都有單獨(dú)的索引時(shí)。
  • unique_subquery:不容易遇見(jiàn),in 后面跟子查詢,查詢優(yōu)化器將in轉(zhuǎn)換為exists子查詢,且這些自查徐你可以使用到主鍵進(jìn)行等值匹配才可以。如explain select * from table1
    where field in (select id from table2 where talbe1.fieldn = 'string') or field2 = 'string'
  • index_subquery:使用子查詢的結(jié)果作為索引來(lái)訪問(wèn)另一個(gè)表。

possible_keys

根據(jù)where/group by修飾的字段,可能使用的索引,并不保證實(shí)際執(zhí)行時(shí)一定會(huì)使用這些索引,可以有多個(gè)。

key

表示實(shí)際選擇的索引。

keylen

索引字段的最大長(zhǎng)度,單位字節(jié),值越大越好,主要對(duì)于聯(lián)合索引有參考意義。
注意這里的越大越好,是跟當(dāng)前字段的情況比較,如int類型占4個(gè)字節(jié),顯示4或者5(包含null)就很好。如果是varchar(100),則顯示400,或403(utf8mb4+null+記錄長(zhǎng)度的字節(jié) ==> 100 * 4 + 1 + 2,如果字段不為null,則省掉一個(gè)字節(jié)),比顯示260更好。

ref

索引列做等值查詢時(shí),與索引列進(jìn)行等值匹配的對(duì)象信息,對(duì)性能優(yōu)化參考意義不大。
例如等值匹配到了,返回const。

rows

預(yù)估本次查詢要掃描的行數(shù),值越小越好,小了代表范圍精準(zhǔn),進(jìn)而實(shí)現(xiàn)快速查找。

filtered

該filtered列指示按表?xiàng)l件過(guò)濾的表行的估計(jì)百分比。越大越好。最大值為 100,這意味著沒(méi)有發(fā)生行過(guò)濾。
從 100 開(kāi)始遞減的值表示過(guò)濾量的增加。。例如如果 rows為 1000, filtered為 50.00 (50%),則與下表連接的行數(shù)為 1000 × 50% = 500。

Extra

用于備注補(bǔ)充。

  • Using temporary:表示SQL使用union創(chuàng)建的臨時(shí)表所在行。
  • Using index 表示查詢使用了覆蓋索引,即只使用了索引而沒(méi)有訪問(wèn)實(shí)際的數(shù)據(jù)行,這通常發(fā)生在查詢條件中包含了索引覆蓋的所有列。
  • Using where 表示查詢使用了 WHERE 子句過(guò)濾數(shù)據(jù)。
  • Using temporary 表示查詢需要?jiǎng)?chuàng)建臨時(shí)表來(lái)處理結(jié)果集,這可能發(fā)生在使用了臨時(shí)表進(jìn)行排序操作或者連接操作時(shí)。
  • Using filesort 表示查詢需要對(duì)結(jié)果集進(jìn)行文件排序操作,這通常發(fā)生在無(wú)法使用索引完成排序時(shí)。
  • Using join buffer 表示查詢使用了連接緩沖區(qū)來(lái)處理連接操作。
  • Impossible WHERE 表示 WHERE 子句的條件總是為 false,因此查詢將返回空結(jié)果集。
  • Select tables optimized away表示由于某些優(yōu)化,查詢將跳過(guò)不必要的表訪問(wèn)。
  • Full table scan 表示查詢將對(duì)整個(gè)表進(jìn)行全表掃描,沒(méi)有使用任何索引。
  • Using index condition:表示使用了索引下推。
  • Using index for group-by:表示查詢使用了索引進(jìn)行分組操作。
  • Using index for order by:表示查詢使用了索引進(jìn)行排序操作。
  • Using index for distinct 表示查詢使用了索引進(jìn)行去重操作。
  • Using index for limit:表示查詢使用了索引來(lái)執(zhí)行 LIMIT 操作。
  • Using index for merge:表示查詢使用了索引合并進(jìn)行連接操作。
  • Using where with pushed condition:表示查詢的 WHERE 條件中的部分條件被推遲執(zhí)行。
  • Loose index scan: 表示在一些情況下,MySQL 可能對(duì)索引的列進(jìn)行寬松掃描,而不是精確匹配。
  • Range checked for each record: 表示對(duì)于每個(gè)匹配的記錄,都需要進(jìn)一步檢查范圍條件。
  • Using index for LIKE: 表示使用索引執(zhí)行了 LIKE 查詢。
  • Distinct: 表示在處理查詢數(shù)據(jù)時(shí)會(huì)進(jìn)行去重操作。
  • Order by: 表示查詢需要進(jìn)行排序操作。
  • Table is marked as crashed and should be repaired: 表示表已標(biāo)記為損壞,需要修復(fù)。
  • No tables used: 表示查詢使用了某種優(yōu)化方式,無(wú)需訪問(wèn)任何表。
  • Range checked for each record (index map: N): 和 Range checked for each record 類似,但額外說(shuō)明了哪個(gè)表進(jìn)行了進(jìn)一步的范圍檢查。

擴(kuò)展

explain 支持使用原生SQL進(jìn)行json格式輸出,用法explain format=json sql...。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-837791.html

到了這里,關(guān)于MySQL explain的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何使用 Explain 分析 SQL 語(yǔ)句?

    如何使用 Explain 分析 SQL 語(yǔ)句?

    MySQL中 EXPLAIN 命令是我們分析和優(yōu)化SQL語(yǔ)句的利器。 如何使用 EXPLAIN 來(lái)分析SQL語(yǔ)句,接下來(lái)有15個(gè)例子,一起學(xué)習(xí)唄 本文已收錄于,我的技術(shù)網(wǎng)站 ddkk.com,有大廠完整面經(jīng),工作技術(shù),架構(gòu)師成長(zhǎng)之路,等經(jīng)驗(yàn)分享 EXPLAIN 可以用于分析MySQL如何執(zhí)行一個(gè)SQL查詢,包括如何選擇

    2024年01月16日
    瀏覽(16)
  • Mysql---explain詳解

    Mysql---explain詳解

    explain命令是用來(lái)分析查詢語(yǔ)句的執(zhí)行計(jì)劃的工具。它可以顯示查詢語(yǔ)句的執(zhí)行計(jì)劃,包括查詢的順序、使用的索引、掃描的行數(shù)等信息,幫助開(kāi)發(fā)人員優(yōu)化查詢語(yǔ)句的性能。通過(guò)分析執(zhí)行計(jì)劃,可以找到查詢語(yǔ)句的瓶頸,進(jìn)而優(yōu)化查詢語(yǔ)句的性能,提高數(shù)據(jù)庫(kù)的響應(yīng)速度 *

    2024年02月13日
    瀏覽(31)
  • MySQL explain

    mysql explain(或desc)用于分析SQL語(yǔ)句的執(zhí)行計(jì)劃,多用于測(cè)試查詢性能。語(yǔ)法:explain sql... explain執(zhí)行DML語(yǔ)句,數(shù)據(jù)不發(fā)生變化。 explain執(zhí)行的結(jié)果可以有多條數(shù)據(jù),一條數(shù)據(jù)對(duì)應(yīng)一個(gè)表,如果涉及union,MySQL內(nèi)部會(huì)產(chǎn)生一個(gè)臨時(shí)表,就會(huì)導(dǎo)致結(jié)果多一行數(shù)據(jù)。 union all不會(huì)創(chuàng)建臨

    2024年03月09日
    瀏覽(20)
  • MySQL explain詳解

    MySQL explain詳解

    MySQL 的 EXPLAIN 是一個(gè)用于查詢優(yōu)化的。它用于分析和評(píng)估查詢語(yǔ)句的執(zhí)行計(jì)劃,幫助開(kāi)發(fā)者理解查詢語(yǔ)句的性能問(wèn)題以及優(yōu)化查詢的方式。 使用 EXPLAIN ,可以獲取關(guān)于查詢執(zhí)行計(jì)劃的詳細(xì)信息,包括表的訪問(wèn)順序、連接方式、索引使用情況等,這些信息能夠幫助

    2024年02月15日
    瀏覽(19)
  • mysql explain 字段

    mysql explain 字段

    EXPLAIN SELECT * ?FROM t_user2; EXPLAIN SELECT * FROM t_user2 WHERE user_name = \\\'r1\\\' CREATE INDEX index_username ON t_user2(user_name); EXPLAIN SELECT * FROM t_user2 WHERE user_name = \\\'test\\\'; EXPLAIN SELECT * FROM t_user2 WHERE user_name = CONCAT(user_name,\\\'01\\\'); 索引失效 EXPLAIN SELECT * FROM t_user2 WHERE user_name LIKE \\\'test\\\'; EXPLAIN SELECT * FROM t

    2024年03月26日
    瀏覽(19)
  • MYSQL EXPLAIN 執(zhí)行計(jì)劃

    有了慢查詢語(yǔ)句后,就要對(duì)語(yǔ)句進(jìn)行分析。一條查詢語(yǔ)句在經(jīng)過(guò) MySQL 查詢優(yōu)化器的各種基于成本和規(guī)則的優(yōu)化會(huì)后生成一個(gè)所謂的執(zhí)行計(jì)劃,這個(gè)執(zhí)行計(jì)劃展示了接下來(lái)具體執(zhí)行查詢的方式,比如多表連接的順序是什么,對(duì)于每個(gè)表采用什么訪問(wèn)方法來(lái)具體執(zhí)行查詢等等。

    2024年02月05日
    瀏覽(29)
  • 【MySQL】了解MySQL的Explain,讀這一篇夠了( ̄? ̄)/

    【MySQL】了解MySQL的Explain,讀這一篇夠了( ̄? ̄)/

    目錄 ID select_type 查詢類型 table 表名 type 關(guān)聯(lián)類型/訪問(wèn)類型 possible_keys MySQL覺(jué)得可能要用到的索引 key 實(shí)際用到的索引 key_len 用到的索引的長(zhǎng)度(比如可用于判斷使用了聯(lián)合索引中的哪幾個(gè)) ref 表查找值所用的列(表名.字段)或常量(const) row 預(yù)估要讀取并檢測(cè)的行數(shù) Ext

    2023年04月09日
    瀏覽(23)
  • Mysql Explain各字段說(shuō)明

    id :同一個(gè)select,id都是1;不同的select,id才不同。 select_type: 查詢類型 SIMPLE:普通查詢 PRIMARY:主查詢 SUBQUERY:子查詢 DEPENDENT SUBQUERY:子查詢,不能被優(yōu)化為連接查詢 UNION:聯(lián)合查詢 UNION:聯(lián)合查詢后,去除重復(fù)的數(shù)據(jù) UNION ALL: 不去除重復(fù)的數(shù)據(jù) table:表 partitions: type:索引

    2024年01月19日
    瀏覽(20)
  • MySql explain命令返回結(jié)果解讀

    explain 是MySql提供的SQL語(yǔ)句查詢性能的工具,是我們優(yōu)化SQL的重要指標(biāo)手段,要看懂explain返回的結(jié)果集就尤為重要 一個(gè)編號(hào),表示select所屬的行。如果查詢中沒(méi)有子查詢或關(guān)聯(lián)查詢,那么只會(huì)有唯一的SELECT,每一行的該列中都將顯示一個(gè)1,否則,內(nèi)層的SELECT語(yǔ)句一般會(huì)順序編

    2024年02月08日
    瀏覽(20)
  • MySQL性能優(yōu)化之(explain)工具

    MySQL性能優(yōu)化之(explain)工具

    在MySQL當(dāng)中,我們有時(shí)候?qū)懙腟QL執(zhí)行效率太慢此時(shí)我們需要將其優(yōu)化。但是SQL可能非常的多,難道我們一條一條的進(jìn)行查看嗎?在MySQL當(dāng)當(dāng)中我們可以查看慢查詢?nèi)罩?,看看那些SQL這么慢。但是這個(gè)默認(rèn)情況下這個(gè)慢查詢?nèi)罩臼顷P(guān)閉的,我們可以通過(guò)一下命令進(jìn)行查看 執(zhí)行結(jié)

    2024年02月02日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包