参考资料
mysql 索引上的优化
- 没有索引----创建索引
- 没有用到索引
1.查询的类型不符,常见的int和carchar
2.索引对象参与计算
3.索引对象使用函数计算
3.like查询的时候 %str%和%str不走索引(str%走索引)
4.正则表达式不走索引
- 查询回表了
参考资料:查询回表
建表如下:
create table user (
id int primary key,
name varchar(20),
sex varchar(5),
index(name)
)engine=innodb;
两个B+树索引分别如上图:
(1)id为PK,聚集索引,叶子节点存储行记录;
(2)name为KEY,普通索引,叶子节点存储PK值,即id;
如果查询 select * from t where name=‘lisi’; 行走路线如下:
这种情况需要覆盖索引(只需要在一棵索引树上就能获取SQL所需的所有列数据,无需回表)
create table user (
id int primary key,
name varchar(20),
sex varchar(5),
index(name, sex)
)engine=innodb;