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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL explain 命令

發布時間:2025/3/12 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL explain 命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

MySQL 的 explain 命令,主要用于查看實際查詢過程中的一些執行細節(執行計劃),也是查看優化器決定如何執行查詢的主要方法

explain 使用示例

explain 的使用也很簡單,在 select 語句之前增加 explain 關鍵字再執行整個語句即可。explain 的使用示例如下所示:

-- 在 select 語句前增加 explain 關鍵字即可 explain select id, name, age, register_date from user where name = '小美' and age = 22 and register_date = '2015-03-05'

最終返回的數據如下所示:

注意,如果在查詢語句的 from 子句中不包含子查詢的情況下,使用 explain 命令并不會真正地執行查詢;但是如果包含了,那么 explain 仍然會執行子查詢,并將子查詢的查詢結果放在臨時表中。

explain 返回字段介紹

使用 explain 命令之后,將會返回優化器給這條查詢語句制定的執行計劃相關信息,這些信息里面主要包含以下的一些字段:

  • id:查詢子句的執行順序,值越大越先執行,相等的情況下,排在前面的先執行
  • select_type:查詢類型,一共有三個取值
    • PRIMARY:代表的是復雜查詢中最外層的 select 語句
    • DERIVED:代表的是 from 后面的子查詢叫衍生表(或者派生表)
    • SUBQUERY:代表的是 select 中的子查詢
  • table:表示數據從哪張表(或者哪個查詢子句)查詢出來
  • partitions:表示數據從哪個分區表中查詢出來的(小知識:一張表底層是由一個或多個分區表組成的,不同的數據可能會放到不同的分區表上)
  • type:表示關聯類型或訪問類型,即 MySQL 決定如何查找表中的行,以及查找數據行記錄的大概范圍。性能從最優到最差分別為:
    • null:為空時,表示 MySQL 能在優化階段分解查詢語句,在執行階段用不著再訪問表或索引。例如:從表中查詢最小的主鍵值
    • system:當查詢的表中只有一條數據時
    • const:用于主鍵或唯一索引鍵的列與常數進行比較時
    • eq_ref:使用了主鍵或唯一索引的全部部分,被連接使用時,最多只會返回一條符合條件的記錄。
    • range:通常出現在范圍查找中,使用索引來檢索給定范圍的行
    • index:從二級索引的第一個葉子節點開始掃描,一直到最后一個葉子節點
    • ALL:從主鍵索引的第一個葉子節點開始掃描,一直到最后一個葉子節點
    • 一般來說,查詢最好能達到 ref 級別,最低要達到 range 級別
  • posiible_keys:查詢過程中可能會被使用到的索引
  • key:實際使用的索引。有可能 posiible_keys 不為空,但是 key 為空,因為 MySQL 最終會根據實際情況來判斷是否使用索引,如果使用索引的代價比不使用索引的代價還大,那么 MySQL 將不會使用索引
  • key_len:顯示了 MySQL 使用的索引字段長度,由這個值可以確定使用索引的部分
  • ref:查詢字段的比較值,const (常量)或者具體的列的名稱
  • rows:MySQL 預估的要掃描的行數
  • extra:一些額外信息
    • Using index:在符合使用覆蓋索引的場景情況下
    • Using where:使用了 where 語句,且要比較的列上沒有索引
    • Using index condition:查詢的列沒有完全被索引覆蓋
    • Using temporary:查詢過程中使用了臨時表
    • Using filesort:使用外部排序,而非索引排序。如果數據較小時將在內存排序否則需要在磁盤完成排序
    • Select tables optimized away:使用某些聚合函數(比如:max、min)來訪問存在索引的某個字段時,結果直接可以用索引上獲得

總結

以上是生活随笔為你收集整理的MySQL explain 命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。