CREATE INDEX idx_name_age ON users(name, address);
复制代码
然后实行:
SELECT address FROM users WHERE name = 'Alice';
复制代码
此时,idx_name_age 索引已经包含 name 和 address,以是可以直接在索引中获取数据,不必要回表。 (2)使用主键查询
如果使用 id(主键)查询,就不必要回表:
SELECT address FROM users WHERE id = 3;
复制代码
由于 InnoDB 的主键索引(聚簇索引)本身就存储了完整数据,以是查询 id 不会回表。 5. 总结
查询方式是否回表缘故原由主键查询 (SELECT * FROM users WHERE id = 3)❌ 不会由于主键索引(聚簇索引)包含完整数据非主键索引查询 (SELECT address FROM users WHERE name = ‘Alice’)✅ 会回表先查 name 索引,再回表查 address覆盖索引查询 (SELECT name FROM users WHERE name = ‘Alice’)❌ 不会name 索引已经包含查询字段