1. 程式人生 > >mysql 全表掃描、全索引掃描、索引覆蓋(覆蓋索引)

mysql 全表掃描、全索引掃描、索引覆蓋(覆蓋索引)

full index scan:全索引掃描,查詢時,遍歷索引樹來獲取資料行。如果資料不是密集的會產生隨機IO
在執行計劃中是Type列,index


full table scan:通過讀物理表獲取資料,順序讀磁碟上的檔案。這種情況會順序讀磁碟上的檔案。
在執行計劃中是Type列,all


covering index:覆蓋索引,如果where條件的列和返回的資料在一個索引中,那麼不需要回查表,那麼就叫覆蓋索引。
在執行計劃中是extra那一列,using index


full index scan  vs full table scan
全索引掃描並不一定就比全表掃描好,取決於資料儲存位置。
如果資料在記憶體,那麼這兩種沒有太大區別。
如果資料在磁碟,全表掃描比全索引掃描要好,這是因為,全表掃描是順序讀資料,sequential read,是順序IO

而全索引掃描,可能會產生隨機讀(reandom read),隨機IO,顯然,順序讀要比隨機讀快很多。

檢視執行計劃的樣例