這篇文章主要介紹了執行計劃的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著(zhù)大家一起了解一下。
執行計劃是什么?
執行計劃,簡(jiǎn)單的來(lái)說(shuō),是SQL在數據庫中執行時(shí)的表現情況,通常用于SQL性能分析,優(yōu)化等場(chǎng)景。
一. 執行計劃能告訴我們什么?
SQL如何使用索引
聯(lián)接查詢(xún)的執行順序
查詢(xún)掃描的數據函數
二. 執行計劃中的內容
SQL執行計劃的輸出可能為多行,每一行代表對一個(gè)數據庫對象的操作
1. ID列
ID列中的如果數據為一組數字,表示執行SELECT語(yǔ)句的順序;如果為NULL,則說(shuō)明這一行數據是由另外兩個(gè)SQL語(yǔ)句進(jìn)行 UNION操作后產(chǎn)生的結果集
ID值相同時(shí),說(shuō)明SQL執行順序是按照顯示的從上至下執行的
ID值不同時(shí),ID值越大代表優(yōu)先級越高,則越先被執行
演示
可以看到上面的執行計劃返回了3行結果,id列的值可以看作是SQL中所具有的SELECT操作的序號
由于上述SQL中只有一個(gè)SELECT,所以id全為1,因此,我們就要按照由上至下讀取執行計劃
按照我們的SQL語(yǔ)句,我們會(huì )認為執行順序是a,b,c,但是通過(guò)上圖可以發(fā)現,Mysql并不是完成按照SQL中所寫(xiě)的順序來(lái)進(jìn)行表的關(guān)聯(lián)操作的
執行對表的執行順序為a,c,b,這是由于MySQL優(yōu)化器會(huì )根據表中的索引的統計信息來(lái)調整表關(guān)聯(lián)的實(shí)際順序
2. SELECT_TYPE列
3. TABLE列
包含以下幾種結果:
輸出去數據行所在表的名稱(chēng),如果表取了別名,則顯示的是別名
<union M,N>: 由ID為M,N查詢(xún)union產(chǎn)生的結果集
<derived N>/<subquery N> :由ID為N的查詢(xún)產(chǎn)生的結果
4. PARTITIONS列:
查詢(xún)匹配的記錄來(lái)自哪一個(gè)分區
對于分區表,顯示查詢(xún)的分區ID
對于非分區表,顯示為NULL
5. TYPE列
按性能從高至低排列如下:
6. Extra列
包含MySQL如何執行查詢(xún)的附加信息
7. POSSIBLE_KEYS列
指出MySQL能使用哪些索引來(lái)優(yōu)化查詢(xún)
查詢(xún)列所涉及到的列上的索引都會(huì )被列出,但不一定會(huì )被使用
8. KEY列
查詢(xún)優(yōu)化器優(yōu)化查詢(xún)實(shí)際所使用的索引
如果表中沒(méi)有可用的索引,則顯示為NULL
如果查詢(xún)使用了覆蓋索引,則該索引僅出現在Key列中
9. KEY_LEN列
顯示MySQL索引所使用的字節數,在聯(lián)合索引中如果有3列,假如3列字段總長(cháng)度為100個(gè)字節,Key_len顯示的可能會(huì )小于100字節,比如30字節,這就說(shuō)明在查詢(xún)過(guò)程中沒(méi)有使用到聯(lián)合索引的所有列,只是利用到了前面的一列或2列
表示索引字段的最大可能長(cháng)度
Key_len的長(cháng)度由字段定義計算而來(lái),并非數據的實(shí)際長(cháng)度
10. Ref列
表示當前表在利用Key列記錄中的索引進(jìn)行查詢(xún)時(shí)所用到的列或常量
11. rows列
表示MySQL通過(guò)索引的統計信息,估算出來(lái)的所需讀取的行數(關(guān)聯(lián)查詢(xún)時(shí),顯示的是每次嵌套查詢(xún)時(shí)所需要的行數)
Rows值的大小是個(gè)統計抽樣結果,并不十分準確
12. Filtered列
表示返回結果的行數占需讀取行數的百分比
Filtered列的值越大越好(值越大,表明實(shí)際讀取的行數與所需要返回的行數越接近)
Filtered列的值依賴(lài)統計信息,所以同樣也不是十分準確,只是一個(gè)參考值
三. 執行計劃的限制
無(wú)法展示存儲過(guò)程,觸發(fā)器,UDF對查詢(xún)的影響
無(wú)法使用EXPLAIN對存儲過(guò)程進(jìn)行分析
早期版本的MySQL只支持對SELECT語(yǔ)句進(jìn)行分析
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站