MySQL在Innodb和MyISAM中的二级索引

        本文主要讲解InnoDB和MyISAM两种存储引擎的二级索引区别。

1.二级索引与聚簇索引

聚簇索引的认识请参考百科点击打开链接

二级索引,又被成为辅助索引,在不同存储引擎中的内容不同。

两者的区别在于:聚簇索引的叶子节点存放的是主键值和数据行,支持覆盖索引;二级索引的叶子节点存放的是主键值或指向数据行的指针。

2.两种引擎中的区别

InnoDB中的二级索引存放的是主键值,如果需要查询对应的数据行,需要回表查询,即在聚簇索引中进一步查找对应的数据行。这样可以避免在行移动或者插入新数据时出现的页分裂问题。

MyISAM中无论是主键索引还是二级索引,索引的叶子节点存放的都是指向数据行的指针,保证可以通过索引进而查找到对应的数据行,只需要对索引进行一遍查找。这样会存在页分裂问题。

参考文献

高性能MySQL,宁海元等,电子工业出版社,2013版

你可能感兴趣的:(MySQL数据库)