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,顯然,順序讀要比隨機讀快很多。


查看執行計划的樣例







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM