php explain type等級,mysql中explain分析sql詳解

Explain舉例mysql>?explain?select?*?from?event;

+—-+————-+——-+——+—————+——+———+——+——+——-+

|?id?|?select_type?|?table?|?type?|?possible_keys?|?key?|?key_len?|?ref?|?rows?|?Extra?|

+—-+————-+——-+——+—————+——+———+——+——+——-+

|?1?|?SIMPLE?|?event?|?ALL?|?NULL?|?NULL?|?NULL?|?NULL?|?13?|?|

+—-+————-+——-+——+—————+——+———+——+——+——-+

1?row?in?set?(0.00?sec)

各個屬性的含義

id

Query Optimizer 所選定的執行計劃中查詢的序列號

select_type

select查詢的類型,主要是區別普通查詢和聯合查詢、子查詢之類的復雜查詢。

各項內容含義說明:

A:simple:表示不需要union操作或者不包含子查詢的簡單select查詢。有連接查詢時,外層的查詢為simple,且只有一個。

B:primary:一個需要union操作或者含有子查詢的select,位于最外層的單位查詢的select_type即為primary。且只有一個。

C:union:union連接的select查詢,除了第一個表外,第二個及以后的表select_type都是union。

D:dependent union:與union一樣,出現在union 或union all語句中,但是這個查詢要受到外部查詢的影響

E:union result:包含union的結果集,在union和union all語句中,因為它不需要參與查詢,所以id字段為null

F:subquery:除了from字句中包含的子查詢外,其他地方出現的子查詢都可能是subquery

G:dependent subquery:與dependent union類似,表示這個subquery的查詢要受到外部表查詢的影響

H:derived:from字句中出現的子查詢。

I:materialized:被物化的子查詢

J:UNCACHEABLE SUBQUERY:對于外層的主表,子查詢不可被物化,每次都需要計算(耗時操作)

K:UNCACHEABLE UNION:UNION操作中,內層的不可被物化的子查詢(類似于UNCACHEABLE SUBQUERY)

table

輸出的行所引用的表。

type

聯合查詢所使用的類型。

type顯示的是訪問類型,是較為重要的一個指標,結果值從好到壞依次是:

system

> const > eq_ref > ref > fulltext > ref_or_null >

index_merge > unique_subquery > index_subquery > range >

index > ALL

一般來說,得保證查詢至少達到range級別,最好能達到ref。除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一個索引

A:system:表中只有一行數據或者是空表,且只能用于myisam和memory表。如果是Innodb引擎表,type列在這個情況通常都是all或者index

B:const:使用唯一索引或者主鍵,返回記錄一定是1行記錄的等值where條件時,通常type是const。其他數據庫也叫做唯一索引掃描

C:eq_ref:出現在要連接過個表的查詢計劃中,驅動表只返回一行數據,且這行數據是第二個表的主鍵或者唯一索引,且必須為not null,唯一索引和主鍵是多列時,只有所有的列都用作比較時才會出現eq_ref

D:ref:不像eq_ref那樣要求連接順序,也沒有主鍵和唯一索引的要求,只要使用相等條件檢索時就可能出現,常見與輔助索引的等值查找。或者多列主鍵、唯一索引中,使用第一個列之外的列作為等值查找也會出現,總之,返回數據不唯一的等值查找就可能出現。

E:fulltext:全文索引檢索,要注意,全文索引的優先級很高,若全文索引和普通索引同時存在時,mysql不管代價,優先選擇使用全文索引

F:ref_or_null:與ref方法類似,只是增加了null值的比較。實際用的不多。

例如:

SELECT * FROM ref_table

WHERE key_column=expr OR key_column IS NULL;

G:index_merge:表示查詢使用了兩個以上的索引,最后取交集或者并集,常見and ,or的條件使用了不同的索引,官方排序這個在ref_or_null之后,但是實際上由于要讀取所個索引,性能可能大部分時間都不如range

H:unique_subquery:用于where中的in形式子查詢,子查詢返回不重復值唯一值

I:index_subquery:用于in形式子查詢使用到了輔助索引或者in常數列表,子查詢可能返回重復值,可以使用索引將子查詢去重。

J:range:索引范圍掃描,常見于使用 =, <>, >, >=, , BETWEEN, IN()或者like等運算符的查詢中。

K:index:索引全表掃描,把索引從頭到尾掃一遍,常見于使用索引列就可以處理不需要讀取數據文件的查詢、可以使用索引排序或者分組的查詢。

possible_keys

指出MySQL能使用哪個索引在該表中找到行。

key

顯示MySQL實際決定使用的鍵。如果沒有索引被選擇,鍵是NULL。

key_len

顯示MySQL決定使用的鍵長度。如果鍵是NULL,長度就是NULL。文檔提示特別注意這個值可以得出一個多重主鍵里mysql實際使用了哪一部分。

ref

顯示哪個字段或常數與key一起被使用。

rows

這個數表示mysql要遍歷多少數據才能找到,在innodb上是不準確的。

Extra

如果你想要優化你的查詢,那就要注意extra輔助信息中的using filesort和using temporary,這兩項非常消耗性能,需要注意。

這個列可以顯示的信息非常多,有幾十種,常用的有:

distinct:在select部分使用了distinc關鍵字,當 mysql 找到了第一條匹配的結果后,將停止該值的查詢而轉為后面其他值的查詢

no tables used:不帶from字句的查詢或者From dual查詢。

使用not in()形式子查詢或not exists運算符的連接查詢,這種叫做反連接。即,一般連接查詢是先查詢內表,再查詢外表,反連接就是先查詢外表,再查詢內表。

using filesort:排序時無法使用到索引時,就會出現這個。常見于order by和group by語句中。

using index:查詢時不需要回表查詢,直接通過索引就可以獲取查詢的數據,使用覆蓋索引的時候就會出現

using

index condition: 在MySQL 5.6版本后加入的新特性ICP(Index Condition Pushdown);會先條件過濾索引,過濾完索引后找到所有符合索引條件的數據行,隨后用 WHERE 子句中的其他條件去過濾這些數據行。

using where:表示MySQL服務器在存儲引擎收到記錄后進行“后過濾”(Post-filter),如果查詢未能使用索引,Using where的作用只是提醒我們MySQL將用where子句來過濾結果集。這個一般發生在MySQL服務器,而不是存儲引擎層。一般發生在不能走索引掃描的情況下或者走索引掃描,但是有些查詢條件不在索引當中的情況下。

using join buffer(block nested loop),using join buffer(batched key accss):5.6.x之后的版本優化關聯查詢的BNL,BKA特性。主要是減少內表的循環數量以及比較順序地掃描查詢。

using sort_union,using_union,using intersect,using sort_intersection:

using intersect:表示使用and的各個索引的條件時,該信息表示是從處理結果獲取交集。

using union:表示使用or連接各個使用索引的條件時,該信息表示從處理結果獲取并集。

using sort_union和using sort_intersection:與前面兩個對應的類似,只是他們是出現在用and和or查詢信息量大時,先查詢主鍵,然后進行排序合并后,才能讀取記錄并返回。

using temporary:表示使用了臨時表存儲中間結果。臨時表可以是內存臨時表和磁盤臨時表,執行計劃中看不出來,需要查看status變量,used_tmp_table,used_tmp_disk_table才能看出來。

firstmatch(tb_name):5.6.x開始引入的優化子查詢的新特性之一,常見于where字句含有in()類型的子查詢。如果內表的數據量比較大,就可能出現這個

loosescan(m..n):5.6.x之后引入的優化子查詢的新特性之一,在in()類型的子查詢中,子查詢返回的可能有重復記錄時,就可能出現這個。

版權聲明:本文由PHP面試資料網發布,如需轉載請注明出處。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277381.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277381.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

es6中的塊級作用域

塊級作用域 凡是帶{}都是塊級作用域&#xff0c;if(){} for(){} 對象{} 1.在塊級作用域下&#xff0c;var 和function跟在window下一樣&#xff0c; function有個特殊的一點&#xff0c;在塊級作用域下會提前聲明&#xff0c;不會提前定義 2.在塊級作用域下 let和const聲明的變…

Windows10安裝Ubuntu子系統+docker教程說明

說明 微軟和Ubuntu深入合作推出了基于win桌面運行Ubuntu系統.為了滿足開發同學也在win下也可以使用ubuntu的開發環境.通過利用win上的Linux子系統Ubuntu16.04能否安裝docker并正常使用 復制代碼 首先在安裝Ubuntu應用之前&#xff0c;我們要做一些事情&#xff0c;避免安裝和使…

【HDU - 2612】Find a way(bfs)

-->Find a way 直接上Chinese Descriptions: hsj和lsh最近迷上了pokemon go的游戲。在雙十一大物期中考試來臨之前&#xff0c;他們想抓一只稀有土撥鼠來攢攢人品&#xff08;因為土撥鼠的刷新地點最近來到了哈工程&#xff09;但是由于土撥鼠過于強大&#xff0c;他的雷霆半…

getMeasuredWidth和getWidth的區別

View的getWidth()和getMeasuredWidth()有什么區別嗎&#xff1f; View的高寬是由View本身和Parent容器共同決定的。getMeasuredWidth()和getWidth()分別對應于視圖繪制的measure和layout階段。getMeasuredWidth()獲取的是View原始的大小&#xff0c;也就是這個View在XML文件中配…

php圖片地址參數錯誤,圖片上傳時一直顯示請求地址錯誤怎么辦

1、出現“請求地址錯誤”的直接原因&#xff1a;圖中$action null2.根本原因&#xff1a;url美化那一節課程&#xff0c;去掉 index.php的.htaccess 文件修改的時候&#xff0c;沒有按照老師的來寫&#xff0c;所以美化url以后獲取不到地址欄參數&#xff0c;導致$action值為n…

C#寫的WebServices可運行于樹莓派

閱讀目錄 Raspkate - 基于.NET的可運行于樹莓派的輕量型Web服務器Raspkate項目演示回到目錄Raspkate - 基于.NET的可運行于樹莓派的輕量型Web服務器 最近在業余時間玩玩樹莓派&#xff0c;剛開始的時候在樹莓派里寫一些基于wiringPi庫的C語言程序來控制樹莓派的GPIO引腳&#x…

[導入]Ms XmlDom 異步裝載Xml文件

Ms XmlDom 異步裝載Xml文件文章來源:http://blog.csdn.net/net_lover/archive/2004/07/07/36015.aspx 轉載于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2004/07/07/816151.html

Django的View(視圖)

Django的View&#xff08;視圖&#xff09; 一個視圖函數&#xff08;類&#xff09;&#xff0c;簡稱視圖&#xff0c;是一個簡單的Python 函數&#xff08;類&#xff09;&#xff0c;它接受Web請求并且返回Web響應。 響應可以是一張網頁的HTML內容&#xff0c;一個重定向&am…

高質量的期貨研究報告去哪里找?

作者&#xff1a;虎虎的小尾巴鏈接&#xff1a;https://www.zhihu.com/question/25331621/answer/205439281來源&#xff1a;知乎著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。這是個好問題&#xff0c;我曾經或者直到現在我也一直在追求高…

oracle中偏移,怎么對相同的坐標點偏移?

上面說的第三步必須保證每個點不能重復分配&#xff0c;有些難度&#xff0c;還是用過程代碼吧。CREATE TABLE t_offset asselect 1 id,1.001 x,1.002 y, 10 mark from dualunion allselect 2011 id,1.001 x,1.012 y, 31 mark from dualunion allselect 3…

設計模式之--原型模式

1.原型模式定義 原型模式非常簡單&#xff0c;定義如下&#xff1a; 用原型實例指定創建對象的種類&#xff0c;并且通過拷貝這些原型創建新的對象 2.通用類圖 原型模式的核心是實現Cloneable接口&#xff0c;此接口為JDK提供的一個標識接口&#xff0c;只有實現了此接口的類才…

搜索目錄里所有文件(包括子目錄)

搜索目錄里所有文件(包括子目錄&#xff09; 資料來源&#xff1a;http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.aspx 用到兩個函數ParseDirectory 和CreatePathListvoidParseDirectory(stringpath, stringfilter) { strin…

一張圖理解buffer與cache

轉載于:https://blog.51cto.com/11193863/2169166

oracle服務器不識別tc服務,記一次ORACLE無法啟動登陸事故

打開XSHELL 登陸ORACLE用戶1.sqlplus scott/scott 提示登陸失敗2.sqplus / as sysdba 啟動數據庫提示3.查找日志操作日志&#xff1a;$ORACLE_HOME/startup.log啟動日志&#xff1a;$ORACLE_BASE/diag/rdbms/ora11g/ora11g/trace/alert_ora11g.log (ora11g為SID值)啟動日志如果…

重構(Refactoring)技巧讀書筆記 之二

重構&#xff08;Refactoring&#xff09;技巧讀書筆記 之二<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />General Refactoring Tips, Part 2本文繼續《重構&#xff08;Refactoring&#xff09;技巧讀書筆記 之一》&#xff…

史上最全的Angular.js 的學習資源

Angular.js 的一些學習資源 基礎 官方&#xff1a; http://docs.angularjs.org angularjs官方網站已被墻&#xff0c;可看 http://www.ngnice.com/&#xff1b;官方zip下載包 http://best.factj.com/dolymood/angular-packages&#xff0c;已增加docs服務&#xff0c;輸入地址即…

BMP位圖之8位位圖(三)

起始結構 typedef struct tagBITMAPFILEHEADER { WORD bfType; //類型名&#xff0c;字符串“BM”&#xff0c; DWORD bfSize; //文件大小 WORD bfReserved1; //保留字 WORD bfReserved2; //保留字 DWORD bfOffBits; //實際位圖數據的偏移字節數&#xff0c;即前三個部分長度之…

DNN 漢化中的問題????

今天看到了一份已經漢化過的DNN但是比較奇怪&#xff0c;當第一次運行后我所指定的新數據庫中并沒有添加新的內容&#xff0c;但是網站上的確是已經漢化過了的&#xff0c;不知道它把漢化的內容放到了哪里&#xff1f;&#xff1f;&#xff1f; 另外他所漢化界面的地方&#x…

php 打印對象詳細信息,php打印顯示數組與對象的函數詳解

php打印顯示數組與對象的函數詳解發布于 2014-11-17 18:55:49 | 699 次閱讀 | 評論: 0 | 來源: 網友投遞PHP開源腳本語言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點&…

ios開發-調用系統自帶手勢

在 iPhone 或 iPad 的開發中&#xff0c;除了用 touchesBegan / touchesMoved / touchesEnded 這組方法來控制使用者的手指觸控外&#xff0c;也可以用 UIGestureRecognizer 的衍生類別來進行判斷。用 UIGestureRecognizer 的好處在于有現成的手勢&#xff0c;開發者不用自己計…