日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

MySQL EXPLAIN輸出列的詳細解釋

瀏覽:25日期:2023-10-03 11:11:41
1. 簡介

EXPLAIN語句提供有關 MySQL 如何執行語句的信息。

EXPLAIN與SELECT、DELETE、INSERT、REPLACE和UPDATE語句一起使用。

mysql> EXPLAIN SELECT * FROM employees WHERE emp_no = 10001;+----+-------------+-----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+| 1 | SIMPLE | employees | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100.00 | NULL |+----+-------------+-----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+1 row in set, 1 warning (0.00 sec)

簡單來講,通過EXPLAIN可以分析出SQL語句走沒走索引,走的是什么索引。

EXPLAIN為SELECT語句中使用的每個表返回一行信息,它按照 MySQL 在處理語句時讀取它們的順序列出了輸出中的表。

MySQL 使用嵌套循環連接(Nested-Loop Join Algorithms)解析所有連接,這意味著 MySQL 從第一個表中讀取一行,然后在第二個表,第三個表中找到匹配的行,依此類推。處理完所有表后,MySQL將通過表列表輸出選定的列后回溯直到找到一個表,其中存在更多匹配的行。從該表中讀取下一行,然后繼續下一個表。

2.EXPLAIN 輸出列 MySQL版本 5.7.33 Windows10 64位

從上圖看到 EXPLAIN 的結果中,包括的表頭id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra,這些字段的意思我們來學習然后通過實例進行了解一下。

2.1 id

SELECT 標識符,查詢中 SELECT 的順序號。如果該行引用其他行的并集結果,則該值可以為NULL。在這種情況下,表列顯示類似<unionM,N>的值,以指示該行引用 id 值為 M 和 N 的行的并集。

id 值分三種情況:

id 相同,執行順序由上至下

mysql> EXPLAIN ( -> SELECT * FROM employees emp -> LEFT JOIN dept_emp de ON emp.emp_no = de.emp_no -> LEFT JOIN departments dept ON dept.dept_no = de.dept_no -> WHERE emp.emp_no = 10001);+----+-------------+-------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+| 1 | SIMPLE | emp | NULL | const | PRIMARY | PRIMARY | 4 | const| 1 | 100.00 | NULL || 1 | SIMPLE | de | NULL | ref | PRIMARY | PRIMARY | 4 | const| 1 | 100.00 | NULL || 1 | SIMPLE | dept | NULL | eq_ref | PRIMARY | PRIMARY | 12 | employees.de.dept_no | 1 | 100.00 | NULL |+----+-------------+-------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+3 rows in set, 1 warning (0.03 sec)

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

mysql> EXPLAIN SELECT * FROM employees emp -> WHERE emp.emp_no NOT IN ( SELECT de.emp_no FROM dept_emp de -> WHERE de.dept_no NOT IN ( SELECT dept_no FROM departments WHERE dept_name = ’Development’));+----+-------------+-------------+------------+-------+-------------------+-----------+---------+-------+--------+----------+--------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------------+------------+-------+-------------------+-----------+---------+-------+--------+----------+--------------------------+| 1 | PRIMARY | emp | NULL | ALL | NULL | NULL | NULL | NULL | 299468 | 100.00 | Using where || 2 | SUBQUERY | de | NULL | index | PRIMARY | dept_no | 12 | NULL | 308493 | 100.00 | Using where; Using index || 3 | SUBQUERY | departments | NULL | const | PRIMARY,dept_name | dept_name | 122 | const | 1 | 100.00 | Using index |+----+-------------+-------------+------------+-------+-------------------+-----------+---------+-------+--------+----------+--------------------------+3 rows in set, 1 warning (0.00 sec)

id相同和不相同都存在

如果id相同可以認為是一組,同一組id執行順序由上至下,不同組之間,id值越大被執行的優先級越高。

mysql> EXPLAIN SELECT * FROM employees emp -> WHERE emp.emp_no IN ( SELECT de.emp_no FROM dept_emp de -> WHERE de.dept_no IN ( SELECT dept_no FROM departments WHERE dept_name LIKE ’%Develop%’));+----+--------------+-------------+------------+-------+-----------------+-----------+---------+-------------------------------+--------+----------+----------------------------------------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+--------------+-------------+------------+-------+-----------------+-----------+---------+-------------------------------+--------+----------+----------------------------------------------------+| 1 | SIMPLE | <subquery2> | NULL | ALL | NULL | NULL | NULL | NULL | NULL | 100.00 | NULL || 1 | SIMPLE | emp | NULL | ALL | PRIMARY | NULL | NULL | NULL | 299468 | 0.00 | Using where; Using join buffer (Block Nested Loop) || 2 | MATERIALIZED | departments | NULL | index | PRIMARY | dept_name | 122 | NULL | 9 | 11.11 | Using where; Using index || 2 | MATERIALIZED | de | NULL | ref | PRIMARY,dept_no | dept_no | 12 | employees.departments.dept_no | 38561 | 100.00 | Using index|+----+--------------+-------------+------------+-------+-----------------+-----------+---------+-------------------------------+--------+----------+----------------------------------------------------+4 rows in set, 1 warning (0.01 sec)

2.2 select_type

查詢的類型,主要用來區別普通查詢,聯合查詢,子查詢等復雜查詢。

包含SIMPLE、PRIMARY、UNION、DEPENDENT UNION、UNION RESULT、SUBQUERY、DEPENDENT SUBQUERY、DERIVED、MATERIALIZED、UNCACHEABLE SUBQUERY、UNCACHEABLE UNION

SIMPLE

簡單的SELECT,不使用UNION或子查詢。

mysql> EXPLAIN select * from employees where emp_no=10001;+----+-------------+-----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+| 1 | SIMPLE | employees | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 | 100.00 | NULL |+----+-------------+-----------+------------+-------+---------------+---------+---------+-------+------+----------+-------+1 row in set, 1 warning (0.00 sec)

PRIMARY

查詢中若包含任何復雜的子部分,最外層的查詢則被標記為PRIMARY

mysql> EXPLAIN SELECT * FROM employees emp -> WHERE emp.emp_no IN ( SELECT max(emp_no) FROM dept_emp);+----+--------------------+-------+------------+------+---------------+------+---------+------+--------+----------+------------------------------+| id | select_type| table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra|+----+--------------------+-------+------------+------+---------------+------+---------+------+--------+----------+------------------------------+| 1 | PRIMARY | emp | NULL | ALL | NULL | NULL | NULL | NULL | 299468 | 100.00 | Using where || 2 | DEPENDENT SUBQUERY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |+----+--------------------+-------+------------+------+---------------+------+---------+------+--------+----------+------------------------------+2 rows in set, 1 warning (0.00 sec)

UNION

第二個或更靠后的 SELECT 語句出現在 UNION 之后,則被標記為 UNION

mysql> EXPLAIN (SELECT emp_no,dept_no FROM dept_emp LIMIT 10) -> UNION -> SELECT emp_no,dept_no FROM dept_manager;+----+--------------+--------------+------------+-------+---------------+---------+---------+------+--------+----------+-----------------+| id | select_type | table| partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+--------------+--------------+------------+-------+---------------+---------+---------+------+--------+----------+-----------------+| 1 | PRIMARY | dept_emp | NULL | index | NULL | dept_no | 12 | NULL | 308493 | 100.00 | Using index || 2 | UNION| dept_manager | NULL | index | NULL | dept_no | 12 | NULL | 24 | 100.00 | Using index || NULL | UNION RESULT | <union1,2> | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary |+----+--------------+--------------+------------+-------+---------------+---------+---------+------+--------+----------+-----------------+3 rows in set, 1 warning (0.00 sec)

DEPENDENT UNION

與 UNION 相同,它出現在 UNION 或 UNION ALL語句中,但是此查詢受外部查詢的影響

| UNION RESULT union_result Result of a UNION.| SUBQUERY None First SELECT in subquery| DEPENDENT SUBQUERY dependent (true) First SELECT in subquery, dependent on outer query| DERIVED None Derived table| MATERIALIZED materialized_from_subquery Materialized subquery| UNCACHEABLE SUBQUERY cacheable (false) A subquery for which the result cannot be cached and must be re-evaluated for each row of the outer query| UNCACHEABLE UNION cacheable (false) The second or later select in a UNION that belongs to an uncacheable subquery (see UNCACHEABLE SUBQUERY)

總結

到此這篇關于MySQL EXPLAIN輸出列的文章就介紹到這了,更多相關MySQL EXPLAIN輸出列內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文一区一区三区免费在线观 | 免费欧美日韩| 成人国产精品久久| 久久久久久色| 日韩欧美中文字幕一区二区三区 | 免费一级片91| 伊人成人在线视频| 午夜在线视频观看日韩17c| 中文日韩欧美| 自拍自偷一区二区三区| 日韩美女精品| 国产欧美二区| 久久免费精品| 欧美天堂视频| 在线成人动漫av| 免费视频久久| 亚洲精品美女91| 日本视频一区二区| 你懂的亚洲视频| 一级成人国产| 日本91福利区| 福利片在线一区二区| 精品亚洲成人| 91亚洲国产| 国产精品av久久久久久麻豆网| 日韩视频二区| 日韩精品久久久久久| 久久久久网站| 亚洲一区二区成人| 亚洲精品乱码久久久久久蜜桃麻豆 | 日韩av午夜在线观看| 国产精品亚洲欧美日韩一区在线 | 91亚洲国产高清| 欧美成人午夜| 水蜜桃久久夜色精品一区的特点| 偷拍亚洲精品| 久久av影视| 日韩成人高清| 视频一区中文字幕国产| 综合亚洲色图| 美女免费视频一区| 99久久www免费| 日韩视频久久| 国产欧美三级| 中文在线中文资源| 六月天综合网| 国产欧美一区二区三区国产幕精品| 久久97视频| 婷婷亚洲综合| 日本少妇一区二区| 日韩欧美不卡| 亚洲精品黄色| 国产成年精品| 亚洲综合二区| 国产精品欧美三级在线观看| 蜜桃成人精品| 天堂久久一区| 欧美经典一区| 欧美精品一卡| 国产精品午夜一区二区三区| 久久精品导航| 日韩精品视频网| 夜鲁夜鲁夜鲁视频在线播放| 亚洲乱码一区| 日韩.com| 亚洲精品大全| av中文字幕在线观看第一页| 亚洲伊人精品酒店| 精品成av人一区二区三区| 尤物网精品视频| 国产在视频一区二区三区吞精| 亚洲中午字幕| 里番精品3d一二三区| 99在线精品视频在线观看| 欧美成人精品午夜一区二区| 夜夜嗨一区二区| 麻豆一区二区在线| 国产精品日韩欧美一区| 荡女精品导航| 91亚洲无吗| 不卡中文一二三区| 精品久久国产一区| 欧美在线看片| 日韩中文字幕亚洲一区二区va在线| 日韩一区三区| 精品国产不卡| 国产精品日本一区二区三区在线 | 久久精品国产成人一区二区三区| 亚洲日产av中文字幕| 激情综合网站| 欧美成人a交片免费看| 欧美激情视频一区二区三区在线播放| 亚洲影院天堂中文av色| 成人av二区| 免费看av不卡| 国产日产高清欧美一区二区三区 | 免费精品国产的网站免费观看| 美女在线视频一区| 国产亚洲毛片在线| 精品视频国产| 日韩中文字幕一区二区高清99| 在线一区av| 国产伦精品一区二区三区千人斩| 国产一区二区三区不卡av| 国产亚洲一卡2卡3卡4卡新区| 欧美另类综合| 神马久久午夜| 国产精品mv在线观看| 好吊日精品视频| 美女av在线免费看| 日韩精品欧美精品| 亚洲免费激情| 电影天堂国产精品| 欧美极品一区二区三区| 亚洲精品美女91| 免播放器亚洲一区| 香蕉久久99| 成人在线超碰| 国产精品久久久久久久久免费高清| 伊人影院久久| 亚洲成人va| 卡一卡二国产精品| 另类综合日韩欧美亚洲| 日本中文字幕一区二区| 六月婷婷一区| 亚洲天堂一区二区| 麻豆国产精品| 国产欧美一区| 欧美成人a交片免费看| 日韩极品在线观看| 午夜亚洲一区| 免费不卡中文字幕在线| 日本高清不卡一区二区三区视频| 精品亚洲二区| 久久精品毛片| 欧美另类中文字幕| 亚洲精品四区| 蜜桃av一区二区三区电影| 午夜电影亚洲| 欧美日韩国产欧| 午夜久久影院| 午夜电影亚洲| 99pao成人国产永久免费视频| 亚洲高清毛片| 亚洲国内欧美| 欧美成人高清| 久久美女性网| 免费久久99精品国产自在现线| 亚洲激情久久| 欧美日韩国产传媒| 国内在线观看一区二区三区 | 欧美一级一区| 日本色综合中文字幕| 一区二区国产在线观看| 麻豆成人在线| 亚洲伊人精品酒店| 日韩精品一级中文字幕精品视频免费观看 | 亚洲精一区二区三区| 日韩精品一二三| 国产视频一区在线观看一区免费| 欧美日韩激情| 在线观看视频免费一区二区三区| 综合日韩在线| 日本精品国产| 国产精品欧美日韩一区| 久久午夜影院| 丝袜美腿诱惑一区二区三区| 久久只有精品| 久久九九精品| 黄色日韩在线| 视频一区中文| 亚洲一区二区三区久久久| 婷婷精品在线| 国产精品久一| 久久久久黄色| 亚洲欧洲高清| 亚洲精品a级片| 亚洲精品一级| 国产精品久久国产愉拍| 国产精品欧美大片| 亚洲先锋成人| 伊人精品久久| 国产欧美一区二区三区米奇| 精品丝袜久久| 激情欧美一区二区三区| 日本成人一区二区| 欧美激情麻豆| 久久精品av| 一区二区亚洲视频| 中文无码久久精品| 综合激情网站| 国产成人精品亚洲日本在线观看| 久久精品国产68国产精品亚洲| 久久xxxx| 久久一区国产| 欧美色图国产精品| 久久超碰99| 欧美jjzz| 欧美日韩18| 亚洲一本视频|