在使用MySQL查詢時,回表過濾指的是查詢的數據在索引中已經被過濾掉了,但是MySQL還需要在對應的數據表中再次進行一次過濾,才能將符合條件的數據返回給用戶。
回表過濾的發生位置在MySQL的存儲引擎層,因為存儲引擎通過索引定位到需要返回數據的頁,但頁內的數據可能并不符合查詢條件,因此需要在對應的數據表中再次過濾。
示例代碼: SELECT * FROM `table` WHERE `name` = 'Tom';
假設`table`表以`name`字段建立了索引,查詢`name`等于`Tom`的數據時,MySQL會首先通過索引定位到數據所在的頁;然后再回到數據表中,逐一過濾每一行數據,將符合條件的數據返回給用戶。
回表過濾是MySQL中常見的優化點,一般我們可以通過在建立索引時,將查詢語句中需要過濾的字段都加入到索引中,避免回表過濾,提高查詢效率。
上一篇mysql回車后一閃而過
下一篇dockerzk