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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql explain字段含义,MySQL(十七):EXPLAIN 输出信息之 Extra 字段解释

發(fā)布時(shí)間:2025/3/20 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql explain字段含义,MySQL(十七):EXPLAIN 输出信息之 Extra 字段解释 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Child of 'table' pushed join@1 (JSON: message text)

This table is referenced as the child of table in a join that can be pushed down to the NDB kernel. (此表在聯(lián)接中作為子表被引用.......)

const row not found (JSON property: const_row_not_found)

例如出現(xiàn) SELECT ... FROM tbl_name 之類的查詢,但表是空的。

Deleting all rows (JSON property: message)

對(duì)于 DELETE ,某些存儲(chǔ)引擎(如 MyISAM)提供了一種可以簡(jiǎn)單快捷刪除所有表行的方法。如果引擎使用此方法估化,則會(huì)顯示該值。

Distinct (JSON property: distinct)

MySQL 查找沒有重復(fù)的值,在找到第一個(gè)匹配行后就會(huì)停止搜索更多的行。

FirstMatch(tbl_name) (JSON property: first_match)

為 tbl_name 表使用半聯(lián)接 FirstMatch 聯(lián)接快捷方式策略。

Full scan on NULL key (JSON property: message)

當(dāng)優(yōu)化器無法使用索引查找訪問方法時(shí),子查詢優(yōu)化作為回退策略會(huì)出現(xiàn)該值。

Impossible HAVING (JSON property: message)

HAVING 子句一直是 false 并且無法選擇任何行。

Impossible WHERE (JSON property: message)

WHERE 子句一直是 false 并且無法選擇任何行。

Impossible WHERE noticed after reading const tables (JSON property: message)

MySQL 已經(jīng)讀取了所有 const (和 system) 表,并且注意到 WHERE 子句一直為 false。

LooseScan(m..n) (JSON property: message)

使用半聯(lián)接 LooseScan 策略。m 和 n 是 key 的編號(hào)。

No matching min/max row (JSON property: message)

沒有行滿足條件查詢,如 SELECT MIN(...) FROM ... WHERE condition。

no matching row in const table (JSON property: message)

對(duì)于具有聯(lián)接的查詢,有一個(gè)空表或沒有滿足唯一索引條件的行的表會(huì)出現(xiàn)該值。

No matching rows after partition pruning (JSON property: message)

對(duì)于 DELETE 和 UPDATE ,優(yōu)化器在分區(qū)修剪(精簡(jiǎn))之后找不到要?jiǎng)h除或更新的內(nèi)容。與 SELECT 語(yǔ)句的 Impossible WHERE 的含義相似。

No tables used (JSON property: message)

查詢沒有 FROM 子句,或者使用 FROM DUAL 子句。

對(duì)于 INSERT 或 FRPLACE 語(yǔ)句,EXPLAIN 在沒有 SELECT 部分時(shí)顯示該值。

例如,出現(xiàn)在 EXPLAIN INSERT INTO t VALUES(10) 中,該語(yǔ)句等同于 EXPLAIN INSERT INTO t SELECT 10 FROM DUAL.

Not exists (JSON property: message)

MySQL 能夠?qū)Σ樵儓?zhí)行 LEFT JOIN 優(yōu)化,并且在找到與 LEFT JOIN 條件匹配的行后,不會(huì)檢查此表中其它的行。如下示例:

SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

假設(shè) t2.id 被定義為 NOT NULL,MySQL掃描 t1 并使用 t1.id 的值在 t2 中查找行。 如果 MySQL 在t2中找到匹配的行,則它知道 t2.id 永遠(yuǎn)不能為 NULL,并且不會(huì)掃描 t2 中具有相同 id 值的其余行。

換句話說,對(duì)于 t1 中的每一行,MySQL 需要在 t2 中只進(jìn)行一次查找,而不管 t2 中實(shí)際匹配多少行。

Plan isn't ready yet (JSON property: none)

執(zhí)行計(jì)劃還沒還沒創(chuàng)建完成。當(dāng)優(yōu)化器尚未完成為聯(lián)接中的掃許語(yǔ)句創(chuàng)建執(zhí)行計(jì)劃時(shí),EXPLAIN FOR CONNECTION 會(huì)出現(xiàn)該值。

Range checked for each record (index map: N) (JSON property: message)

MySQL 沒有找到可用的好索引,但發(fā)現(xiàn)前面表中的列值是已知后,可能會(huì)使用某些索引。

對(duì)于前面的表行,MySQL 檢查是否可以使用 range 或 index_merge 訪問方法業(yè)檢索行,這不是很快,但比沒有索引的聯(lián)接快。

Scanned N databases (JSON property: message)

表示在處理 INFORMATION_SCHEMA 表的查詢時(shí),服務(wù)器執(zhí)行的目錄掃描數(shù)。N 的值可以是0,1 或 ALL。

Select tables optimized away (JSON property: message)

優(yōu)化器確定:1.最多只返回一行,2.若要生成此行,必須讀取確定的行。在優(yōu)化階段(例如,通過讀取索引行)可以獲得要讀取的行時(shí),查詢執(zhí)行期間不需要讀取任何表。

當(dāng)隱式分組查詢(包含聚合函數(shù),但不包含 group by 子句)時(shí),將滿足第一個(gè)條件。當(dāng)每使用一個(gè)索引執(zhí)行一行查找時(shí),就滿足了第二個(gè)條件。讀取的索引數(shù)決定了要讀取的行數(shù)。

隱式分組查詢示例:

SELECT MIN(c1), MIN(c2) FROM t1;

c1 和 c2 都是索引列,并且該列是索引的第一列。可以通過讀取一個(gè)索引行來檢索 MIN(c1) ,并且通過從不同的索引中讀取一行來檢索 MIN(c2) 。本例中,返回的一行數(shù)據(jù),是由讀取兩個(gè)確定性行生成的。

如果讀取的行不是確定的,則 Extra 不會(huì)顯示此值,如下示例:

SELECT MIN(c2) FROM t1 WHERE c1 <= 10;

Skip_open_table, Open_frm_only, Open_full_table (JSON property: message)

這此值表示適用于 INFORMATION_SCHEMA 表的查詢的文件打開優(yōu)化。

Skip_open_table:不需要打開表文件。通過掃描數(shù)據(jù)庫(kù)目錄,該信息已在查詢中可用。

Open_frm_only:只需打開表的 .frm 文件。

Open_full_table:未經(jīng)優(yōu)化的信息查找。必須打開 .frm,.MYD 和 .MYI文件。

Start temporary, End temporary (JSON property: message)

臨時(shí)表用于半聯(lián)接 Duplicate Weedout 策略。

unique row not found (JSON property: message)

對(duì)于 SELECT .... FROM tbl_name 之類的查詢,沒有行滿足表上 UNIQUE 索引 或 PRIMARY KEY 的條件。

Using filesort (JSON property: using_filesort)

MySQL 必須執(zhí)行額外的操作,以了解如何按排序順序檢索行。

排序是根據(jù)聯(lián)接類型遍歷所有行,并為所有與 WHERE 子句匹配的行存儲(chǔ)排序的 key 和 指向行的指針;然后對(duì) key 進(jìn)行排序,并按排序順序檢索行。

Using index (JSON property: using_index)

僅使用索引樹中的信息從表中檢索列信息。當(dāng)查詢公使用單個(gè)索引列時(shí),顯示此策略。

對(duì)于具有用戶定義的聚簇索引的 InnoDB 表,即使 Extra 列中不存在使用索引,實(shí)際也是可以使用索引。如果 type 是 index 并且 key 是 PRIMARY,則會(huì)出現(xiàn)此情況,即使用主鍵查詢。

Using index condition (JSON property: using_index_condition)

通過訪問索引元組并首先測(cè)試它他來讀取表,以確定是否讀取全表的行。

Using index for group-by (JSON property: using_index_for_group_by)

與 Using index 表訪問方式相似。Using index for group-by 表示MySQL找到了一個(gè)索引,可用于檢索 GROUP BY 或 DISTINCT 查詢所有的列,而無需對(duì)實(shí)際的表進(jìn)行任何額外的磁盤訪問。

此外,索引以最有效的方式使用,因此,對(duì)每個(gè) group, 只需讀取少數(shù)的索引。

Using join buffer (Block Nested Loop), Using join buffer (Batched Key Access) (JSON property: using_join_buffer)

將早期聯(lián)接中的表部分讀入聯(lián)接緩沖區(qū),然后從緩沖區(qū)中使用他們的行來執(zhí)行與當(dāng)前表的聯(lián)接。

也就是說,將緩沖 explain 輸出前一行上表中的 key,并從使用 join buffer 的行指向的表中分批提取匹配的行。

Using MRR (JSON property: message)

使用 Multi-Range Read 優(yōu)化策略讀取表。

Using sort_union(...), Using union(...), Using intersect(...) (JSON property: message)

這些指示的特定算法,顯示了如何為 index_merge 聯(lián)接類型合并索引掃描。

Using temporary (JSON property: using_temporary_table)

要對(duì)查詢進(jìn)行解析,MySQL 需要?jiǎng)?chuàng)建一個(gè)臨時(shí)表來保存結(jié)果。如果查詢包含多個(gè)不同列的 GROUP BY 和ORDER BY 子句,則通常會(huì)發(fā)生此情況。

Using where (JSON property: attached_condition)

WHERE 子句用于限制那些行與下一個(gè)表匹配或發(fā)送到客戶端。

除非特意要檢索表中的所有行,否則若 Extra 值不是 Using where 并且表聯(lián)接是 ALL 或 index,則可能出錯(cuò)了。

Using where with pushed condition (JSON property: message)

此項(xiàng)只適用于 NDB 表。意思是 NDB Cluster 正在使用下推優(yōu)化來提高非索引列和常量之間直接比較的效率。

Zero limit (JSON property: message)

該查詢具有 LIMIT 0 子句,并且無法選擇任何行。

總結(jié)

以上是生活随笔為你收集整理的mysql explain字段含义,MySQL(十七):EXPLAIN 输出信息之 Extra 字段解释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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