深入理解箭頭函式和傳統函式的區別
阿新 • • 發佈:2022-03-07
1. ID
一組數字,操作順序,如果id相同,則執行順序由上至下,如果是子查詢,id的序號遞增,值越大優先順序越高,越先被執行;
2. select_type
每個字句的型別,簡單還是複雜
- simple :簡單查詢,無子查詢或union等;
- primary:查詢中若包含複雜的子部分,最外層則被標記為primary;
- subquery:在select或where中若包含子查詢,則該子查詢被標記為subquery;
- derived:from中包含子查詢,被標記為derived;
- union:若select出現在union之後,則被標記為union;
- union result:從union表中獲取結果的select將被標記為union result;
3. table
查詢的資料庫表名稱
4. type
聯合查詢使用的型別
- system: 表中只有一行資料,且只能用於myisam和memory表 → 效率最高
myisam&memory engine: alter table t4 engine=myisam; >> explain select * from t4 where id=1; - const: 使用唯一索引或者主鍵,返回記錄一定是1行記錄的等值where條件時,通常type是const,其他資料庫也叫做唯一索引掃描
新增唯一索引:alter table t4 add unique(id); >> explain select * from t4 where id=1; - eq_ref: 多表連線檢視中唯一索引或主鍵掃描 >> 唯一一條資料
- ref: 非唯一性索引掃描,交返回匹配單獨值的所有行,常見於使用非唯一性索引或唯一性索引的非唯一字首進行的查詢。
- range: 索引範圍掃描
- index: 全表掃描,只是掃描表的時候按照索引次序 進行而不是行。主要優點就是避免了排序, 但是開銷仍然非常大【需優化】
- all: 全表掃描【需優化】
5. possible_keys
指出mysql能使用哪個索引在表中找到行,查詢涉及的欄位上若存在索引,則該索引將被列出。如果為空,說明沒有可用的索引
6. key
使用到了哪個索引,這裡列出的是實際使用到的索引,若沒有使用索引,則顯示為null。
7. key_len
使用的索引的長度。在不損失精確性的情況 下,長度越短越好。
8. ref
顯示索引的哪一列被使用了
9. rows
MYSQL 認為必須檢查的用來返回請求資料的行數.找到所需記錄,需要讀取的行數,越少越好
10. Extra
- Using index:使用了索引檢索。
- where used:使用了where限制,但是用索引還不夠。
- Using temporary:需要使用臨時表來儲存結果集,常見於排序和分組查詢。效能差。
- Using filesoft:使用了檔案排序,效能差。