欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql產生回表的原因

洪振霞2年前8瀏覽0評論

MySQL產生回表的原因

什么是回表

回表是指在使用索引查詢時,MySQL需要根據索引值查找相應的行數據時,發現返回的行數據不僅僅是只有索引列的值,還有其他列的數據,此時MySQL會使用返回的行數據的主鍵值再次查找一遍,獲取完整的行數據的過程就叫回表。

為什么會產生回表

1. 非主鍵索引不包含所有查詢字段
非主鍵索引只保存索引列和主鍵列,當查詢需要的列不全部被所使用的非主鍵索引覆蓋時,MySQL需要回表查找主鍵值,并盡可能地從表中取回數據。雖然這會增加額外的操作,但是相比做全表掃描,它顯然是更加高效的。

2. 使用聚集索引的其它列
在使用多列聚集索引查詢時,如果查詢的列并不是索引的第一列,那么MySQL需要先根據索引查找到相應行的主鍵,然后再通過主鍵查找到所有需要的列數據。

3. 計算查詢中的表達式
如果查詢中包含某些需要計算的表達式,比如計數、求和等函數,MySQL需要使用返回的行數據的主鍵值再次查找一遍,獲取完整的行數據進行計算。

如何避免回表

1. 使用覆蓋索引
覆蓋索引是指索引包含了全部需要查詢的字段,查詢的時候直接使用索引獲取數據,避免了回表的過程。

2. 使用合適的聚集索引
聚集索引是指按照特定的列順序存儲數據的索引,在某些情況下設置合適的聚集索引減少回表的次數。

3. 減少使用計算表達式
避免使用函數、表達式等操作在查詢中,降低回表的次數。