Myisam索引和Innodb索引的区别

首先你要知道;大数据

不管是Myisam和Innodb引擎,若是在建表的时候没有显示的定义一行主键列的话,他内部都会自动建立一个隐藏的主键索引;指针

 主键索引之外的索引假设称为次索引;首先Myisam和Innodb两个都是默认采用的btree索引,能够脑补一颗二叉树;排序

myisam引擎的数据在物理磁盘上是按照顺序存储的,而innodb引擎的表数据是随机分布的;索引

 

myisam的主键索引的叶子节点只存放数据在物理磁盘上的指针,其余次索引也是同样的;innodb

innodb的主键索引的叶子节点下面直接存放数据,其余次索引的叶子节点指向主键id;二叉树

由此能够挖掘出一个问题,就是若是Innodb有大数据列,好比 varchar(300),这种比较多的话,那么排序的时候用主键id排序会比较慢,由于数据

id主键下面放着全部数据列,而Myisam就不须要扫描数据列,要解决这个问题的话能够再建一个和主键id一块儿的联合索引;db

 

索引覆盖与回行:磁盘

若是要查找的数据刚好是索引列,那么就不用在去物理磁盘上去找数据了,就是不用回行,称为索引覆盖;myisam

相关文章
相关标签/搜索