中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中如何使用EXPLAIN命令

發布時間:2021-11-02 17:01:45 來源:億速云 閱讀:167 作者:小新 欄目:MySQL數據庫

這篇文章主要為大家展示了“MySQL中如何使用EXPLAIN命令”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“MySQL中如何使用EXPLAIN命令”這篇文章吧。

explain顯示了mysql如何處理select語句以及連接表。

下面是explain命令的一個例子:

C:\Users\duansf>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.13 MySQL Community Server (GPL)


Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> use test
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| workinfo       |
+----------------+
1 row in set (0.00 sec)


mysql> explain select * from workinfo\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: workinfo
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 1
        Extra:
1 row in set (0.00 sec)


mysql>

 
1、id
SELECT識別符,這是SELECT查詢序列號。這個不重要,查詢序號即為sql語句執行的順序


2、select_type
select類型,它有以下幾種值:
simple:它表示簡單的select,沒有union和子查詢
primary:最外面的select,在有子查詢的語句中,最外面的select查詢就是primary
union:union語句的第二個及以后的子查詢
dependent union:UNION中的第二個及以后的子查詢語句,取決于外面的查詢
union result:UNION的結果
subquery:子查詢中的第一個select語句
dependent subquery:依賴于外查詢的子查詢中的第一個select
derived:子查詢衍生出來的表
materialized:物化子查詢
uncacheable subquery:不能被緩存,需要重新評估的子查詢
uncacheable union:union中第二個及以上的uncacheable subquery中需要重新評估的子查詢


3、table
輸出的行所用的表


4、type
連接類型
system:表僅有一行,這是const類型的特列,平時不會出現,這個也可以忽略不計
const:表最多有一個匹配行,const用于比較primary key 或者unique索引。因為只匹配一行數據,所以很快。記住一定是用到primary key或者unique,并且只檢索出兩條數據的情況下才會是const
eq_ref:對于每個來自于前面的表的行組合,從該表中讀取一行。這可能是最好的聯接類型,除了const類型。它用在一個索引的所有部分被聯接使用并且索引是UNIQUE或PRIMARY KEY"。eq_ref可以用于使用=比較帶索引的列。
ref:對于每個來自于前面的表的行組合,所有有匹配索引值的行將從這張表中讀取。如果聯接只使用鍵的最左邊的前綴,或如果鍵不是UNIQUE或PRIMARY KEY(換句話說,如果聯接不能基于關鍵字選擇單個行的話),則使用ref。如果使用的鍵僅僅匹配少量行,該聯接類型是不錯的。
fulltext:使用全文索引
ref_or_null:該聯接類型如同ref,但是添加了MySQL可以專門搜索包含NULL值的行。在解決子查詢中經常使用該聯接類型的優化。
index_merge:該聯接類型表示使用了索引合并優化方法。在這種情況下,key列包含了使用的索引的清單,key_len包含了使用的索引的最長的關鍵元素。
unique_subquery:在帶有in的子句中用來代替ref
index_subquery:類似于unique_subquery,查詢條件
range:給定范圍內的檢索,使用一個索引來檢查行,用到=、<>、>、<、>=、<=、is null、<=>、between、in
ALL:對于每個來自于先前的表的行組合,進行完整的表掃描。如果表是第一個沒標記const的表,這通常不好,并且通常在它情況下很差。通常可以增加更多的索引而不要使用ALL,使得行能基于前面的表中的常數值或列值被檢索出。
index:該聯接類型與ALL相同,除了只有索引樹被掃描。這通常比ALL快,因為索引文件通常比數據文件小。(也就是說雖然all和Index都是讀全表,但index是從索引中讀取的,而all是從硬盤中讀的)


5、possible_keys
提示使用哪個索引會在該表中找到行


6、keys
查詢實際用到的索引


7、key_len
實際用到的索引長度

8、ref
ref列顯示使用哪個列或常數與key一起從表中選擇行。

9、rows
顯示執行查詢的行數,,數值越大越不好,說明沒有用好索引

10、Extra
查詢語句的額外信息

以上是“MySQL中如何使用EXPLAIN命令”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福州市| 宜川县| 利津县| 岗巴县| 饶平县| 武川县| 凤庆县| 东宁县| 平果县| 清涧县| 深泽县| 原阳县| 柳江县| 华蓥市| 洛浦县| 青龙| 开鲁县| 敦化市| 禄劝| 闻喜县| 时尚| 高阳县| 寻甸| 佛山市| 庆云县| 霍山县| 井陉县| 阿合奇县| 洛浦县| 宝丰县| 威宁| 荆门市| 葵青区| 无棣县| 通渭县| 南乐县| 长春市| 弋阳县| 临桂县| 玉屏| 凉山|