避免回表问题__
mysql数据库 innodb
CREATE TABLE `abc_innodb`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` varchar(10) DEFAULT NULL,
`d` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_abc` (`a`, `b`, `c`)
) ENGINE = InnoDB;
可以通过创建联合索引,索引覆盖的方式避免回表
问题1: 联合索引页字节点储存的是主键,是怎么避免回表的? 难道叶子结点还存 索引列数据?
select a, b from abc_innodb where a = 1 and b = 2 and c= 3;
CREATE TABLE `user_innodb`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_age` (`age`) USING BTREE
) ENGINE = InnoDB;
问题2: 表中一列创建普通索引, 查询结果就是就是索引列,是否可以避免回表 ?
select age from abc_innodb where age = 1 ;