大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 MySQL中explain命令詳解

MySQL中explain命令詳解

更新時間:2021-01-29 17:53:22 來源:動力節點 瀏覽1243次

MySQL中的explain命令顯示了mysql如何使用索引來處理select語句以及連接表。explain顯示的信息可以幫助選擇更好的索引和寫出更優化的查詢語句。MySQL中explain命令的使用其實很簡單,只要explain后邊跟著SQL語句就行了。例如:explain select * from tb_student;

好奇的同學可能要問了,MySQL中的explain命令有什么特別之處嗎?值得單獨拿出來講,MySQL為什么需要explain命令呢?簡單來說:通過explain命令我們可以學習到該條SQL是如何執行的,隨后解析explain的結果可以幫助我們使用更好的索引,最終來優化它。分點來說,mysql中explain命令有以下作用:

1.描述MySQL如何執行查詢操作、執行順序,使用到的索引,以及MySQL成功返回結果集需要執行的行數。

2.可以幫助我們分析 select 語句,讓我們知道查詢效率低下的原因,從而改進我們的查詢,讓查詢優化器能夠更好的工作

3.優化select 語句,分析哪些是常量表達式(例如id=1),以及分析哪些表達式可以直接轉換成常量的

4.對where條件進行簡化和轉換,如去掉無用條件,調整條件結構等

5.讀取涉及的表的統計信息,并計算分析(例如返回的行數,索引信息等),最終得出執行計劃。

 

相對于了解explain命令的作用,能夠讀懂explain命令輸出的結果也十分重要,explain命令的輸出結果有10列:id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra,下面我們來一一介紹每列的含義。

1.id

包含一組數字,表示查詢中執行SELECT子句或操作表的順序。

在id列上也會有幾種情況:

如果id相同執行順序由上至下。

如果id不相同,id的序號會遞增,id值越大優先級越高,越先被執行。

2.select_type

表示select查詢的類型

select_type屬性下有好幾種類型:

SIMPLLE:簡單查詢,該查詢不包含 UNION 或子查詢

PRIMARY:如果查詢包含UNION 或子查詢,則最外層的查詢被標識為PRIMARY

UNION:表示此查詢是 UNION 中的第二個或者隨后的查詢

DEPENDENT:UNION 滿足 UNION 中的第二個或者隨后的查詢,其次取決于外面的查詢

UNION RESULT:UNION 的結果

SUBQUERY:子查詢中的第一個select語句(該子查詢不在from子句中)

DEPENDENT SUBQUERY:子查詢中的 第一個 select,同時取決于外面的查詢

DERIVED:包含在from子句中子查詢(也稱為派生表)

UNCACHEABLE SUBQUERY:滿足是子查詢中的第一個 select 語句,同時意味著 select 中的某些特性阻止結果被緩存于一個 Item_cache 中

UNCACHEABLE UNION:滿足此查詢是 UNION 中的第二個或者隨后的查詢,同時意味著 select 中的某些特性阻止結果被緩存于一個 Item_cache 中

類型有點多啊,我加粗的是最常見的,起碼要看得懂加粗的部分。

3.table

該列顯示了對應行正在訪問哪個表(有別名就顯示別名)。

當from子句中有子查詢時,table列是 <derivenN>格式,表示當前查詢依賴 id=N的查詢,于是先執行 id=N 的查詢

4.type

該列稱為關聯類型或者訪問類型,它指明了MySQL決定如何查找表中符合條件的行,同時是我們判斷查詢是否高效的重要依據。

5.possible_keys

這一列顯示查詢可能使用哪些索引來查找

6.key

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

7.key_len

這一列顯示了在索引里使用的字節數,當key列的值為 NULL 時,則該列也是 NULL

8.ref

這一列顯示了哪些字段或者常量被用來和key配合從表中查詢記錄出來。

9.rows

這一列顯示了估計要找到所需的行而要讀取的行數,這個值是個估計值,原則上值越小越好。

10.extra

其他的信息

常見的取值如下:

Using index:使用覆蓋索引,表示查詢索引就可查到所需數據,不用掃描表數據文件,往往說明性能不錯。

Using Where:在存儲引擎檢索行后再進行過濾,使用了where從句來限制哪些行將與下一張表匹配或者是返回給用戶。

Using temporary:在查詢結果排序時會使用一個臨時表,一般出現于排序、分組和多表 join 的情況,查詢效率不高,建議優化。

Using filesort:對結果使用一個外部索引排序,而不是按索引次序從表里讀取行,一般有出現該值,都建議優化去掉,因為這樣的查詢 CPU 資源消耗大。

初次遇見MySQL中的explain命令,我們可能會覺得很復雜,無從下手,實際上我們只要掌握了上述的具體的列和列中下的屬性是什么意思,學起來也就淺顯易懂了。想要學習MySQL的更多知識,就到本站的MySQL教程,名師講解,內容豐富的資料,助你學有所成!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 四虎最新网站 | 免费视频爱爱太爽了 | 九月婷婷综合 | 五月婷婷综合在线视频 | 国产一及片 | 亚洲视频中文字幕在线 | 91婷婷色| 欧美一区二区三区在观看 | 男人深夜网站 | 一级黄色a毛片 | 久久99亚洲精品久久久久99 | 亚洲视频在线一区 | 综合国产| 欧美精品国产第一区二区 | 添人人躁日日躁夜夜躁夜夜揉 | www.精品在线| 日本欧美一二三区色视频 | 欧美三级在线观看不卡视频 | 免费a黄色 | 99精品久久久久久久免费看蜜月 | 久久精品国产线看观看亚洲 | 精品精品国产理论在线观看 | 日韩欧美亚洲综合久久影院d3 | 色综合图区 | 成人永久免费高清 | 女生毛片 | 久久久久综合网 | 久草男人天堂 | 欧美一级片网 | 五月婷婷综合在线 | 日夜夜操| 国产精品久久久久桃色tv | 日日夜夜精品视频 | 精产国品一二二区视 | 中文字幕最新中文字幕中文字幕 | 免费精品国产自产拍在 | 久久精品视频免费在线观看 | 国产精品社区在线观看 | 久久99久久精品久久久久久 | 成人国产精品一级毛片了 | 亚洲视频一区在线 |