1. 程式人生 > 其它 >深入理解箭頭函式和傳統函式的區別

深入理解箭頭函式和傳統函式的區別


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:使用了檔案排序,效能差。