一渊季、通過使用explain來分析sql查詢性能
explain顯示了mysql如何使用索引來處理select語句以及連接表蜂莉〉琅可以幫助選擇更好的索引和寫出更優(yōu)化的查詢語句
explain使用方法
在sql最前面加上explain悬荣,如:
explain列的解釋
-
select_type : 查詢類型错洁,說明:
- table:顯示這一行的數(shù)據(jù)是關(guān)于哪張表的
- type:這是重要的列秉宿,顯示連接使用了何種類型。從最好到最差的連接類型為system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
- possible_keys:顯示可能應(yīng)用在這張表中的索引屯碴。如果為空描睦,沒有可能的索引〉级可以為相關(guān)的域從where語句中選擇一個(gè)合適的語句
- key: 實(shí)際使用的索引忱叭。如果為null,則沒有使用索引今艺。很少的情況下韵丑,mysql會(huì)選擇優(yōu)化不足的索引。這種情況下虚缎,可以在select語句中使用use index(indexname)來強(qiáng)制使用一個(gè)索引或者用ignore index(indexname)來強(qiáng)制mysql忽略索引
- key_len:使用的索引的長(zhǎng)度撵彻。在不損失精確性的情況下,長(zhǎng)度越短越好
- ref:顯示索引的哪一列被使用了,如果可能的話陌僵,是一個(gè)常數(shù)
- rows:mysql認(rèn)為必須檢查的用來返回請(qǐng)求數(shù)據(jù)的行數(shù)
- extra:關(guān)于mysql如何解析查詢的額外信息轴合。