mysql 索引2
Posted 七七负柒柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 索引2相关的知识,希望对你有一定的参考价值。
mysql 索引
Innodb的回表
为普通列增加索引,会查找两次树,
因为普通列的索引中得到的值是主键值,然后在通过这个索引值到id的树结构中查找数据,如果是主键添加索引的话就只需要查找一张表,这种先找到主键id再去查找数据的方式就叫回表
MyISAM
叶子节点存储的是地址值,在通过地址值找到相应的数据
Mymory
特点查询速度快
原因:数据放在内存中
缺点:数据在内存中是非持久化的,而且数据量大的话占用内存资源
Innodb和MyISAM的区别:
就是叶子节点存储的是数据还是地址值
索引分类:
1.主键索引
2.唯一索引
3.普通索引
4.全文索引
5.组合索引
主键索引:
自增id是如何实现的:
自增锁
不是自增id会产生页分裂和页合并
会造成资源浪费,效率和磁盘空间
覆盖索引
普通索引会有回表的情况 在第一个B+树 返回的是主键值
所以查询的时候只查询主键的话 就只需要查询一个B+树 加快了查询速度
select id from table where name ="";
如果name和id两个列都有索引
覆盖索引就是上面的写法只写id不进行回表操作 只查询name的索引b+树
全文索引:MyISAM支持 在Innodb5.6之后支持
现在可以使用ES来进行全文检索
可以建立在varchar char text上建立
组合索引:
最左匹配原则
索引下推:
如上name建立索引的时候
select * from table where name ="zhangsan" and age= 18
原先没有索引下推的时候是:
将name=zhangsan的数据的id值返回给主键索引树然后去取出来数据和查看age是否为18返回
有了索引下推是
将name=zhangsan和age=18的id值返回给主键索引树 然后取出数据返回
存储引擎
索引维护
以上是关于mysql 索引2的主要内容,如果未能解决你的问题,请参考以下文章