MySQL 掃描是數(shù)據(jù)庫中用于查詢數(shù)據(jù)的一種技術(shù)。掃描指的是在表中遍歷每個記錄以找到滿足查詢條件的行。MySQL 中有三種掃描方式:全表掃描,索引掃描,全覆蓋索引掃描。
全表掃描
SELECT * FROM TableName;
全表掃描意味著查詢會遍歷整個表,無論是否存在索引,都會掃描每一行數(shù)據(jù)。全表掃描在小表時速度較快,但對于大表來說,掃描時間將非常長。同時,它也會導(dǎo)致 CPU 和內(nèi)存的負(fù)載增加。
索引掃描
SELECT * FROM TableName WHERE ColumnName=value;
索引掃描是在索引中查找符合條件的行,而不是遍歷整個表。它比全表掃描快得多,尤其是在大表中查詢幾乎不可避免的情況下。索引掃描速度快的原因在于它只掃描了索引 B-tree 而不是整個表。
全覆蓋索引掃描
SELECT ColumnName1,ColumnName2 FROM TableName WHERE ColumnName=value;
全覆蓋索引掃描與索引掃描類似,但它不需要訪問表中的任何數(shù)據(jù)行。為了有效返回查詢數(shù)據(jù),MySQL 創(chuàng)建了一個稱為“覆蓋索引”的特殊類型的索引??梢允褂眠@種方式最大程度地減少不必要的磁盤 I/O 和 CPU 上的負(fù)載。