如何通過 explain 判斷二級索引是否消除回表操作
分析:
給定的 sql 查詢在 idx_track_source_id_created_at_len_parse_result_list 索引上使用了索引查找。要判斷是否還存在回表操作,需要檢查 Extra 字段。
判斷標準:
- 如果 Extra 中包含 using Index 或 Using Index Condition,則不需要回表。
- 如果 Extra 中包含 Using where 且未出現 Using Index,則存在回表操作。
本例分析:
給定 explain 結果中,Extra 字段為 Using where; Using index; Using temporary; Using filesort,其中:
- Using index 表明使用了索引查找。
- Using where 表明需要根據 WHERE 條件過濾結果。
因此,本示例中存在回表操作。這是因為索引覆蓋了所需字段,但同時也需要根據 WHERE 條件過濾數據。因此,mysql 需要從聚簇索引中檢索滿足條件的行。
結論:
通過檢查 explain 輸出中的 Extra 字段,可以判斷二級索引是否消除了回表操作。如果 Extra 中包含 Using Index 或 Using Index Condition,則不需要回表;否則,存在回表操作。