索引下推
索引下推简称ICP(index condition push),是mysql5.6后新增的功能,主要的核心点在于把数据筛选的过程放在了存储引擎层面,减少了返回的数据量和回表的次数,从而提高查询效率。
举例说明:
1 | 以联合索引(name,age)为例,假设查询条件为name LIKE '张%' AND age=10: |
回表
数据库查询使用普通字段时,因为索引中只存了索引键值和主键值,无法通过索引键值查询到数据,所以需要回表,也就是通过主键值查询到数据。
如何避免回表?
创建包含所有查询字段的索引,例如索引包含(name, department)时,查询SELECT department FROM employees WHERE name='Alice'可直接从索引获取数据,无需回表
需注意索引长度限制,避免触发回表
使用聚簇索引(如主键索引)的叶子节点存储完整数据行,直接通过主键查询时无需回表。例如,SELECT * FROM employees WHERE id=1可直接获取所有字段