EXPLAIN说明
| id | ? | SELECT語句的ID編號,優先執行編號較大的查詢,如果編號相同,則從上向下執行 |
| select_type | SIMPLE | 一條沒有UNION或子查詢部分的SELECT語句 |
| PIMARY | 最外層或最左側的SELECT語句 | |
| UNION | UNION語句里的第二條或最后一條SELECT語句 | |
| DEPENDENT UNION | 和UNION類型的含義相似,但需要依賴于某個外層查詢 | |
| UNION RESULT | 一條UNION語句的結果 | |
| SUBQUERY | 子查詢中的第一個SELECT子句 | |
| DEPENDENT SUBQUERY | 和SUBQUERY類型的含義相似,但需要依賴于某個外層查詢 | |
| DERIVED | FROM子句里的子查詢 | |
| table | t1 | 各輸出行里的信息是關于哪個數據表的 |
| Partitions | NULL | 將要使用的分區.只有EXPLAIN PARTITIONS ...語句才會顯示這一列.非分區表顯示為NULL |
| type | ? | 聯接操作的類型,性能由好到差依次如下 |
| system | 表中僅有一行 | |
| const | 單表中最多有一個匹配行 | |
| eq_ref | 聯接查詢中,對于前表的每一行,在此表中只查詢一條記錄,使用了PRIMARY或UNIQUE | |
| ref | 聯接查詢中,對于前表的每一行,在此表中只查詢一條記錄,使用了INDEX | |
| ref_or_null | 聯接查詢中,對于前表的每一行,在此表中只查詢一條記錄,使用了INDEX,但是條件中有NULL值查詢 | |
| index_merge | 多個索引合并 | |
| unique_subquery | 舉例說明: value IN (SELECT primary_key FROM single_table WHERE some_expr) | |
| index_subquery | 舉例說明: value IN (SELECT key_column FROM single_table WHERE some_expr) | |
| range | 只檢索給定范圍的行,包括如下操作符: =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, or IN() | |
| index | 掃描索引樹(略比ALL快,因為索引文件通常比數據文件小) | |
| ALL | 前表的每一行數據都要跟此表匹配,全表掃描 | |
| possible_keys | NULL | MySQL認為在可能會用到的索引.NULL表示沒有找到索引 |
| key | NULL | 檢索時,實際用到的索引名稱.如果用了index_merge聯接類型,此時會列出多個索引名稱,NULL表示沒有找到索引 |
| key_len | NULL | 實際使用的索引的長度.如果是復合索引,那么只顯示使用的最左前綴的大小 |
| ref | NULL | MySQL用來與索引值比較的值, 如果是單詞const或者???,則表示比較對象是一個常數.如果是某個數據列的名稱,則表示比較操作是逐個數據列進行的.NULL表示沒有使用索引 |
| rows | ? | MySQL為完成查詢而需要在數據表里檢查的行數的估算值.這個輸出列里所有的值的乘積就是必須檢查的數據行的各種可能組合的估算值 |
| Extra | Using filesort | 需要將索引值寫到文件中并且排序,這樣按順序檢索相關數據行 |
| Using index | MySQL可以不必檢查數據文件, 只使用索引信息就能檢索數據表信息 | |
| Using temporary | 在使用 GROUP BY 或 ORDER BY 時,需要創建臨時表,保存中間結果集 | |
| Using where | 利用SELECT語句中的WHERE子句里的條件進行檢索操作 |
轉載于:https://www.cnblogs.com/chengxiansheng/p/10821576.html
總結
- 上一篇: SpringBoot RabbitMQ
- 下一篇: 复习webpack4之Code Spli