MYSQL效能分析之explain 之extra列案例分析
阿新 • • 發佈:2022-03-17
1. Using where Using index
查詢的列被索引覆蓋,並且where篩選條件是索引列之一但是不是索引的前導列,意味著無法直接通過索引查詢來查詢到符合條件的資料
2. Using index condition
與 Using where 類似,查詢的列不完全被索引覆蓋,where條件中是一個前導列的範圍
3. using temporary
表示使用了臨時表儲存中間結果。臨時表可以是記憶體臨時表和磁碟臨時表,執行計劃中看不了來,需要檢視 status變數,used_temp_table, user_tmp_disk_table才能看出來
4. using filesort
mysql會對結果使用一個外部索引排序,而不是按索引次序從表裡讀取行。此時mysql會根據聯接型別瀏覽所有符合條件的記錄,並儲存排序關鍵字和行指標,然後排序關鍵字並按順序檢索行資訊。這種情況下一般也是要考慮使用索引來優化的
5. using itersect
表示使用and的各個索引的條件時,該資訊表示是從處理結果獲取交集
6. using union
表示使用or連線各個使用索引的條件時,該資訊表示從處理結果獲取並集
7. using sort_union和using sort_intersection
用and和or查詢資訊量大時,先查詢主鍵,然後進行排序合併後返回結果集
8. firstmatch(tb_name)
5.6.x開始引入的優化子查詢的新特性之一,常見於where字句含有in()型別的子查詢。如果內表的資料量比較大,就可能出現這個
9. loosescan(m..n)
5.6.x開始引入的優化子查詢的新特性之一,在in()型別的子查詢中 ,子查詢返回的可能有重複記錄時,就可能出現這個