mysql索引

时间:2020-05-02 00:30:58   收藏:0   阅读:83

索引是什么

索引帮助mysql高效获取数据的数据结构,存储到磁盘,索引的文件存储形式与存储引擎相关。存储引擎:不同的表数据文件,在磁盘里以不同的组织形式存在,常见存储引擎有Innodb、MyISAM、memory 区别为:

索引文件结构

索引的分类

回表

如果建的是普通索引,B+树的叶子节点存储的不是整行数据,而是当前数据的主键,根据主键值,在主键的B+树查找数据,遍历两次。如果没有设置主键就找唯一健,如果唯一健也没有会找row_id。

索引覆盖

select id from table where name=jay
如果你用name建了个普通索引,id又刚好是主键,那么这条语句就不用回表。

最左匹配原则

为了更高效的建立,使用组合索引。假如用age,gender创建组合索引,那么从左向右依次进行查找,先匹配age,再匹配gender
select * from table where age = 18 and gender = m
select * from table where age = 18 and gender = m
select * from table where gender = m
select * from table where age = 18
第三条不可以,因为先匹配的gender。第二条mysql会做优化,可以。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!