回表
只查询一次索引得不到想要的数据,典型的场景就是非聚簇索引查询:先拿到主键ID,再根据id查询一次得到数据(再次查询这就是回表)
索引覆盖:根据普通索引查询不回表就能得到数据
-- 联合索引(age, addr)
select age, addr from t_user where age > 10;
-- 单列索引(不一定非要联合索引,因为每个二级都有id,只要不回表就行)
select id, age from t_user where age > 10;
索引下推:索引覆盖是不回表,索引下推是减少回表次数
-- 常规思路:先查询 age > 10,根据聚簇索引的结果集,再过滤 age < 60 的
-- 真实执行:先查询 age > 10,后面条件也是 age,不先找聚簇索引了,再把 a < 60 的也过滤了,再找聚簇索引
select * from t_user where age > 10 and age < 60;
-- 联合索引(age,name)
-- 思路一样,先过滤 a > 10,因为是联合索引,先把 name like 了再找聚簇索引
select * from t_user where age > 10 and name like '张%';
标签:10,聚簇,--,age,下推,回表,索引,调优,mysql
From: https://www.cnblogs.com/hangychn/p/17409010.html