MySQL explain 、explain extended用法


explain顯示了mysql如何使用索引來處理select語句以及連接表。可以幫助選擇更好的索引和寫出更優化的查詢語句。

使用方法,在select語句前加上explain就可以了,如:

explain select * from statuses_status where id=11;

explain列的解釋
table:顯示這一行的數據是關於哪張表的

type:這是重要的列,顯示連接使用了何種類型。從最好到最差的連接類型為const、eq_reg、ref、range、indexhe和all

possible_keys:顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇一個合適的語句

key: 實際使用的索引。如果為null,則沒有使用索引。很少的情況下,mysql會選擇優化不足的索引。這種情況下,可以在select語句中使用use index(indexname)來強制使用一個索引或者用ignore index(indexname)來強制mysql忽略索引

key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好

ref:顯示索引的哪一列被使用了,如果可能的話,是一個常數

rows:mysql認為必須檢查的用來返回請求數據的行數(掃描行的數量)

extra:執行情況的說明和描述,包含不適合在其他列中顯示但是對執行計划非常重要的額外信息。關於mysql如何解析查詢的額外信息。但這里可以看到的壞的例子是using temporary和using filesort,意思mysql根本不能使用索引,結果是檢索會很慢

explain extended的解釋

用explain extended查看執行計划會比explain多一列 filtered。filtered列給出了一個百分比的值,這個百分比值和rows列的值一起使用,可以估計出那些將要和explain中的前一個表進行連接的行的數目。前一個表就是指explain 的 id列的值比當前表的id小的表。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM