在使用MySQL進(jìn)行性能優(yōu)化的過程中,我們必然會接觸到Explain執(zhí)行計劃。Explain執(zhí)行計劃是用于展示MySQL數(shù)據(jù)庫在執(zhí)行一條查詢語句時,是如何進(jìn)行哪些操作,這些操作的執(zhí)行順序、使用了哪些索引等信息的工具。
在MySQL直接執(zhí)行SQL查詢語句時,只需要在查詢語句前加上Explain關(guān)鍵字,即可獲取該查詢語句的執(zhí)行計劃。使用方法如下:
Explain select * from user where age >18;
獲得的執(zhí)行計劃將會展示在表格中,包括ID、select_type、table、type、possible_keys、key、key_length、ref、rows、Extra等字段。接下來我們將逐個解釋這些字段的含義:
- ID:表示查詢結(jié)果表中一個唯一的標(biāo)識符,一條查詢語句會根據(jù)需要擁有多個查詢結(jié)果表,那么這些查詢結(jié)果表在Explain執(zhí)行計劃中會被編號,這些編號就是這個ID字段的值。
- select_type:表示查詢的類型,包括SImple、primary、derieved、subquery、union等等。
- table:表示執(zhí)行表的名稱。
- type:表示MySQL在表中找到所需行的方式,是全表掃描還是使用了索引。
- possible_keys:表示MySQL能夠使用哪些索引加快查詢速度。
- key:表示MySQL實際使用的索引。
- key_length:表示MySQL在使用索引的時候使用了多少個字節(jié)。
- ref:表示MySQL在使用索引上的哪些列與查詢中的哪些列使用了等于操作符,對于組合索引的情況,其值為多個列名以逗號隔開。
- rows:表示MySQL查詢需要掃描的行數(shù)。
- Extra:表示MySQL在執(zhí)行查詢過程中發(fā)生的一些額外的操作,例如使用了哪些臨時表和文件排序等。
當(dāng)我們在進(jìn)行MySQL的性能優(yōu)化時,主要會關(guān)注type和key兩個字段,其中type字段的值越小,說明查詢速度越快,即使用了索引,key字段則展示了MySQL實際使用的索引名稱,如果該值為空,則說明MySQL沒有使用任何索引加快查詢。
總體來說,Explain執(zhí)行計劃為MySQL優(yōu)化查詢提供了很大幫助。但在使用時,需要注意后續(xù)的優(yōu)化結(jié)果是否達(dá)到預(yù)期目標(biāo),因為一條SQL語句可能會由于一些特殊原因,導(dǎo)致執(zhí)行計劃并不是最優(yōu)的。
上一篇css 字體包使用方法
下一篇css 字體左移動