成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL EXPLAIN語句中的extended 選項(xiàng)介紹

數(shù)據(jù)庫 MySQL
此文章主要講述的是MySQL EXPLAIN語句中的extended 選項(xiàng)的實(shí)際應(yīng)用與具體的操作步驟,下面就是文章的具體內(nèi)容描述。

以下的文章主要講述的是MySQL EXPLAIN語句中的extended 選項(xiàng)的實(shí)際應(yīng)用與具體的操作步驟,我們大家都了解MySQL數(shù)據(jù)庫中有一個(gè)explain 命令,其主要功能是用來分析select 語句的運(yùn)行效果,例如explain可以獲得select語句。

 

使用的索引情況、排序的情況等等。除此以外,explain 的extended 擴(kuò)展能夠在原本explain的基礎(chǔ)

 

上額外的提供一些查詢優(yōu)化的信息,這些信息可以通過MySQL的show warnings命令得到。下面是一個(gè)最簡(jiǎn)單的例子。

 

首先執(zhí)行對(duì)想要分析的語句進(jìn)行MySQL explain,并帶上extended選項(xiàng)

 

MySQL> explain extended select * from account\G;

 

 1. row

 

  1. id: 1  
  2. select_type: SIMPLE  
  3. table: account  
  4. type: ALL  
  5. possible_keys: NULL  
  6. key: NULL  
  7. key_len: NULL  
  8. ref: NULL  
  9. rows: 1  
  10. filtered: 100.00  
  11. Extra:  
  12. 1 row in set, 1 warning (0.00 sec) 

接下來再執(zhí)行Show Warnings

MySQL> show warnings\G;

1. row Level: Note

  1. Code: 1003  
  2. Message: select `dbunit`.`account`.`id` AS `id`,`dbunit`.`account`.`name` AS `name` from `dbunit`.`account`  
  3. 1 row in set (0.00 sec) 

 

從 show warnings的輸出結(jié)果中我們可以看到原本的select * 被MySQL優(yōu)化成了

 

select `dbunit`.`account`.`id` AS `id`,`dbunit`.`account`.`name` AS `name`。

 

explain extended 除了能夠告訴我們MySQL的查詢優(yōu)化能做什么,同時(shí)也能告訴我們MySQL的

 

查詢優(yōu)化做不了什么。MySQL performance的Extended EXPLAIN這篇文中中作者就利用explain

 

extended +show warnings 找到了MySQL查詢優(yōu)化器中不能查詢優(yōu)化的地方。

 

從 EXPLAIN extended SELECT * FROM sbtest WHERE id>***ND id>6 AND c=”a” AND pad=c

 

語句的輸出我們得知MySQL的查詢優(yōu)化器不能將id>5 和 id>6 這兩個(gè)查詢條件優(yōu)化合并成一個(gè) id>6。

 

在MySQL performance的explain extended文章中第三個(gè)例子和靜室的MySQL explain的extended選項(xiàng)文章中,

兩位作者也對(duì)explain extended做了進(jìn)一步的實(shí)驗(yàn),從這個(gè)兩篇文中中我們可以得出結(jié)論是從

 

explain extend的輸出中,我們可以看到sql的執(zhí)行方式,對(duì)于分析sql還是很有幫助的。

 

下面特別摘抄了靜室的explain的extended選項(xiàng)這篇文章中的內(nèi)容

 

以下代碼和分析摘抄至靜室的explain的extended選項(xiàng)

  1. MySQL>explain extended select * from t where a in (select b from i);  
  2. +—-+——————–+——-+——+  
  3. | id | select_type | table | type |  
  4. +—-+——————–+——-+——+  
  5. | 1 | PRIMARY | t | ALL |  
  6. | 2 | DEPENDENT SUBQUERY | i | ALL |  
  7. +—-+——————–+——-+——+  
  8. 2 rows in set, 1 warning (0.01 sec) 

子查詢看起來和外部的查詢沒有任何關(guān)系,為什么MySQL顯示的是DEPENDENT SUBQUERY,

和外部相關(guān)的查詢呢?從explain extended的結(jié)果我們就可以看出原因了。

 

MySQL>show warnings\G

1. row

  1. Level: Note  
  2. Code: 1003  
  3. Message: select `test`.`t`.`a` AS `a`,`test`.`t`.`b` AS `b`,`test`.`t`.`c` AS `c`  
  4. from `test`.`t` where  
  5. <in_optimizer>(`test`.`t`.`a`,  
  6. <exists>(select 1 AS `Not_used` from `test`.`i`  
  7. where (<cache>(`test`.`t`.`a`) = `test`.`i`.`b`)))  
  8. 1 row in set (0.00 sec) 

在這里MySQL改寫了SQL,做了in的優(yōu)化。

以上代碼和分析摘抄至靜室的explain的extended選項(xiàng)

 

不過需要注意的一點(diǎn)是從EXPLAIN extended +show warnings得到“優(yōu)化以后”的查詢語句

可能還不是最終優(yōu)化執(zhí)行的sql,或者說MySQL explain extended看到的信息還不足以說明MySQL最

 

終對(duì)查詢語句優(yōu)化的結(jié)果。同樣還是MySQL formance的explain Extended這篇文章的第二個(gè)

 

例子就說明了這種情況

 

 

  1. MySQL> EXPLAIN extended SELECT t1.id,t2.pad FROM sbtest t1, sbtest t2 WHERE t1.id=5 
  2. AND t2.k=t1.k;  
  3. +—-+————-+——-+——-+—————+———+———+——-+——-+——-+  
  4. | id | select_type | TABLE | type | possible_keys | KEY | key_len | ref | rows | Extra |  
  5. +—-+————-+——-+——-+—————+———+———+——-+——-+——-+  
  6. | 1 | SIMPLE | t1 | const | PRIMARY,k | PRIMARY | 4 | const | 1 | |  
  7. | 1 | SIMPLE | t2 | ref | k | k | 4 | const | 55561 | |  
  8. +—-+————-+——-+——-+—————+———+———+——-+——-+——-+  
  9. 2 rows IN SET, 1 warning (0.00 sec)  
  10. MySQL> SHOW warnings \G  

1. row Level: Note

  1. Code: 1003  
  2. Message: SELECT `test`.`t1`.`id` AS `id`,`test`.`t2`.`pad` AS `pad` FROM `test`.`sbtest` `t1`  
  3. JOIN `test`.`sbtest` `t2` WHERE ((`test`.`t2`.`k` = `test`.`t1`.`k`) AND (`test`.`t1`.`id` = 5))  
  4. 1 row IN SET (0.00 sec) 

 

從Explain的結(jié)果中我們可以得到t1表的查詢使用的是”const”類型,也就是說MySQL查詢的時(shí)候

 

會(huì)先由t1.id=5 找到t1.k 再利用t1.k的值去t2表中查詢數(shù)據(jù),很顯然這樣的查詢優(yōu)化結(jié)果沒有在

 

接下來的Show Warings輸出中找到。

 

總結(jié)

 

還是引用靜室 在explain的 extended選項(xiàng)這篇文章中的幾句話”從MySQL explain extend的輸出中,我們可以

 

看到sql的執(zhí)行方式,對(duì)于分析sql還是很有幫助的”。

【編輯推薦】

  1. 配置MySQL與卸載MySQL實(shí)操
  2. MySQL 修改密碼的6個(gè)好用方案
  3. MySQL數(shù)據(jù)庫訪問妙招在Linux之下
  4. 圖解MySQL數(shù)據(jù)庫安裝與實(shí)際操作
  5. MySQL數(shù)據(jù)庫進(jìn)行備份在Linux異構(gòu)網(wǎng)絡(luò)里

 

 

責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-10-12 13:55:41

MySQL EXPLA

2010-11-25 15:57:49

mysql查詢語句

2024-12-11 13:14:27

2010-06-11 17:36:46

MySQL語句

2010-09-03 15:47:40

SQL語句鎖定

2010-09-03 14:39:15

SQLSELECT語句

2010-09-03 11:25:58

SQL刪除

2010-09-03 14:47:50

SQLSELECT語句

2010-09-07 13:41:50

SQL語句

2010-09-07 16:38:36

SQL語句SELECT DIST

2018-06-07 09:45:08

2021-02-25 09:35:32

語句elsePython

2010-11-26 15:32:24

MySQL decla

2010-05-13 17:52:41

MySQL語句

2010-03-09 14:00:20

Python循環(huán)語句

2010-10-15 11:16:52

MySQL Show語

2017-07-27 20:00:47

MySQLEXPLAIN命令

2010-04-13 14:43:37

Oracle性能檢測(cè)

2010-09-07 10:19:31

SQL語句

2010-09-07 14:56:49

SQL語句CASE WHEN
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美精品一区二区在线观看 | 91在线| 在线视频日韩 | 麻豆久久久久久久 | 尤物在线精品视频 | 欧美日韩三级在线观看 | 国产a一区二区 | 国产精品一区二区不卡 | 国产精品日产欧美久久久久 | 日韩福利在线 | 黄色毛片一级 | v片网站 | 午夜男人视频 | 综合网伊人 | 91综合在线视频 | 欧美手机在线 | 色综合色综合色综合 | www国产亚洲精品久久网站 | 在线a视频网站 | 99热视 | 日韩精品在线免费观看视频 | 精品9999| 国产免费一区二区 | 日韩精品在线观看一区二区三区 | 9色网站| 国产aa | 日日日操| 天堂一区 | 国产www成人 | 久久久久一区二区三区 | 亚洲成人a v| 狠狠躁天天躁夜夜躁婷婷老牛影视 | 亚洲网址在线观看 | 在线观看视频一区 | 国产精品成人在线播放 | 国产精品中文 | 亚洲精品字幕 | 成人国产精品免费观看视频 | 插插插干干干 | 色吊丝2| h视频免费在线观看 |