MYSQL explain 履行籌劃。本站提示廣大學習愛好者:(MYSQL explain 履行籌劃)文章只能為提供參考,不一定能成為您想要的結果。以下是MYSQL explain 履行籌劃正文
應用辦法,在select語句前加上explain便可以了:
如:explain select * from test1
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若何解析查詢的額定信息。將在表4.3中評論辯論,但這裡可以看到的壞的例子是Using temporary和Using filesort,意思MYSQL基本不克不及應用索引,成果是檢索會很慢
extra列前往的描寫的意義
Distinct:一旦MYSQL找到了與行相結合婚配的行,就不再搜刮了
Not exists: MYSQL優化了LEFT JOIN,一旦它找到了婚配LEFT JOIN尺度的行,就不再搜刮了
Range checked for each Record(index map:#):沒有找到幻想的索引,是以關於早年面表中來的每個行組合,MYSQL檢討應用哪一個索引,並用它來從表中前往行。這是應用索引的最慢的銜接之一
Using filesort: 看到這個的時刻,查詢就須要優化了。MYSQL須要停止額定的步調來發明若何對前往的行排序。它依據銜接類型和存儲排序鍵值和婚配前提的全體行的行指針來排序全體行
Using index: 列數據是從僅僅應用了索引中的信息而沒有讀取現實的行為的表前往的,這產生在對表的全體的要求列都是統一個索引的部門的時刻
Using temporary 看到這個的時刻,查詢須要優化了。這裡,MYSQL須要創立一個暫時表來存儲成果,這平日產生在對分歧的列集停止ORDER BY上,而不是GROUP BY上
Where used 應用了WHERE從句來限制哪些即將與下一張表婚配或許是前往給用戶。假如不想前往表中的全體行,而且銜接類型ALL或index,這就會產生,或許是查詢有成績分歧銜接類型的說明(依照效力高下的次序排序)
system 表只要一行:system表。這是const銜接類型的特別情形
const:表中的一個記載的最年夜值可以或許婚配這個查詢(索引可所以主鍵或唯一索引)。由於只要一行,這個值現實就是常數,由於MYSQL先讀這個值然後把它當作常數來看待
eq_ref:在銜接中,MYSQL在查詢時,早年面的表中,對每個記載的結合都從表中讀取一個記載,它在查詢應用了索引為主鍵或唯一鍵的全體時應用
ref:這個銜接類型只要在查詢應用了不是唯一或主鍵的鍵或許是這些類型的部門(好比,應用最右邊前綴)時產生。關於之前的表的每個行結合,全體記載都將從表中讀出。這個類型嚴重依附於依據索引婚配的記載若干—越少越好
range:這個銜接類型應用索引前往一個規模中的行,好比應用>或<查找器械時產生的情形
index: 這個銜接類型對後面的表中的每個記載結合停止完整掃描(比ALL更好,由於索引普通小於表數據)
ALL:這個銜接類型關於後面的每個記載結合停止完整掃描,這普通比擬蹩腳,應當盡可能防止