mysql extended_explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二...
MySQL 的explain命令有一個extended選項,我想可以很多人都沒有注意,因為它對命令的輸出結(jié)果沒有任何改變,只是增加了一個warning。這個 warning中顯示了MySQL對SQL的解釋,從這個解釋中我們可以看到SQL的執(zhí)行方式,對于分析SQL還是很有用的。也即explain 的extended 擴(kuò)展能夠在原本explain的基礎(chǔ)上額外的提供一些查詢優(yōu)化的信息,這些信息可以通過mysql的show warnings命令得到。下面是一個最簡單的例子。
首先執(zhí)行對想要分析的語句進(jìn)行explain,并帶上extended選項
mysql> explain extended select count(*) from test1,test2 where test1.id=test2.id and test2.email='duan@qq.com';
接下來再執(zhí)行Show Warnings
mysql> show warnings\G;
explain extended 除了能夠告訴我們mysql的查詢優(yōu)化能做什么,同時也能告訴我們mysql的查詢優(yōu)化做不了什么。Mysql performance的Extended EXPLAIN這篇文中中作者就利用explain?extended +show warnings 找到了mysql查詢優(yōu)化器中不能查詢優(yōu)化的地方。
從 EXPLAIN extended SELECT * FROM sbtest WHERE id>5 AND id>6 AND c="a" AND pad=c語句的輸出我們得知mysql的查詢優(yōu)化器不能將id>5 和 id>6 這兩個查詢條件優(yōu)化合并成一個 id>6。
例如:
mysql> explain extended select * from test1 where id in (select id from test2);
上面是一個子查詢看起來和外部的查詢沒有任何關(guān)系,從explain extended的結(jié)果我們就可以看看mysql如何優(yōu)化的:
不過需要注意的一點是從EXPLAIN extended +show warnings得到“優(yōu)化以后”的查詢語句可能還不是最終優(yōu)化執(zhí)行的sql,或者說explain extended看到的信息還不足以說明mysql最終對查詢語句優(yōu)化的結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的mysql extended_explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql5.5.20安装图解_mysq
- 下一篇: shell 登录mysql 然后quit