使用二級索引查詢是否會回表?

使用二級索引查詢是否會回表?

判斷通過二級索引查詢是否存在回表操作

在給定的查詢中,使用了二級索引 idx_track_source_id_created_at_len_parse_result_list。根據 EXPLaiN 輸出的信息,可以判斷是否存在回表操作:

  • Extra: using where; Using index; Using temporary; Using filesort

根據 Extra 字段的提示,可以得出以下結論:

  • Using Index:表示使用了二級索引進行查詢,無需回表。
  • Using where:表示存在滿足 WHERE 條件的過濾,需要根據二級索引查找滿足條件的數據,然后再進行回表查詢。

因此,該查詢確實存在回表操作。這是因為查詢需要聚合每個 track_source_id 和日期的總計數,這意味著需要遍歷整個二級索引,并對滿足條件的數據進行計數。

判斷依據

可以通過 EXPLAIN 輸出中的 Extra 字段判斷是否存在回表操作:

  • Using Index && Using where:表示需要回表查詢。
  • Using Index:表示索引覆蓋了查詢所需的所有字段,無需回表。

補充說明

使用二級索引查詢是否會回表取決于以下因素:

  • 索引的包含字段是否覆蓋了查詢所需的所有字段。
  • WHERE 子句中是否有不包含在索引中的字段。
  • 聚合函數的使用(如 SUM、count)。聚合函數通常需要回表操作才能完成。

因此,在設計索引時,考慮查詢模式并創建涵蓋常見查詢所需字段的索引非常重要。

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享