Mysql索引优化
覆盖索引优化
涉及概念:回表查询,聚集索引,普通索引
InnoDB:
- 有两大索引,聚集索引和普通索引;聚集索引存储行数据,普通索引存储主键值
- 回表查询,以普通索引查询行的全部数据,必须走两张索引表,先到普通索引获取主键,再到聚集索引获取行数据。
- 覆盖索引,需要查询的数据在索引信息里面已经全部包含,不需要再回表。
create table user (
id int primary key,
name varchar(20),
sex varchar(5),
index(name)
)engine=innodb;
表user的普通索引name,
查询1,只要name信息,不用回表,因为nane已经在索引中
select name from user where name='xxx';
查询2,sex信息需要从行记录里获取,需要回表
select name,sex from user where name ='xxx';
查询2的覆盖索引优化,对标user建立索引index(name, sex)
总结:覆盖索引,就是建立必要的联合索引,查询信息限定在联合索引中,多余的不要查【Mysql索引优化】参考资料
mysql覆盖索引与回表
推荐阅读
- 数据库设计与优化
- py连接mysql
- 2019-01-18Mysql中主机名的问题
- MySql数据库备份与恢复
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- Improve|Improve Nested Conditionals(优化嵌套的条件语句) 面对大量的if-else语句
- 首屏时间,你说你优化了,那你倒是计算出给给我看啊!
- mysql|InnoDB数据页结构
- 数据库|SQL行转列方式优化查询性能实践
- mysql中视图事务索引与权限管理