前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >InnoDB和MyISAM存储引擎对比

InnoDB和MyISAM存储引擎对比

原创
作者头像
javaNice
发布2023-11-21 14:37:51
1570
发布2023-11-21 14:37:51
举报
文章被收录于专栏:javanicejavanice

?InnoDB和MyISAM存储引擎对比

相同点:都是B+索引,不清楚B+索引的可以看上一篇

?InnoDB中的索引

Innodb结构为聚簇索引,索引和数据文件放在一个文件

,包含2种索引:主键索引(聚集索引)辅助索引(非聚集索引)

主键索引:每个表只有一个主键索引,b+树结构,叶子节点同时保存了主键的值也数据记录,其他节点只存储主键的值。

辅助索引:每个表可以有多个,b+树结构,叶子节点保存了索引字段的值以及主键的值,其他节点只存储索引指端的值。

??MyISAM引擎中的索引

B+树结构,MyISM使用的是非聚簇索引

索引文件与数据文件都是单独的的一个文件

如下图:为了更形象说明这两种索引的区别,我们假想一个表存储了4行数据。其中Id作为主索引,Name作为辅助索引,图中清晰的显示了聚簇索引和非聚簇索引的差异。

image-20230710154900118
image-20230710154900118

我们看一下上图中数据检索过程。

?InnoDB数据检索过程

如果需要查询id=14的数据,只需要在左边的主键索引中检索就可以了。

如果需要搜索name=’Ellison’的数据,需要2步:

  1. 先在辅助索引中检索到name=’Ellison’的数据,获取id为14
  2. 再到主键索引中检索id为14的记录

辅助索引这个查询过程在mysql中叫做回表

?MyISAM数据检索过程

  1. 在索引中找到对应的关键字,获取关键字对应的记录的地址
  2. 通过记录的地址查找到对应的数据记录

我们用的最多的是innodb存储引擎,所以此处主要说一下innodb索引的情况,innodb中最好是采用主键查询,这样只需要一次索引,如果使用辅助索引检索,涉及到回表操作,比主键查询要耗时一些。

innodb中辅助索引为什么不像myisam那样存储记录的地址?

表中的数据发生变更的时候,会影响其他记录地址的变化,如果辅助索引中记录数据的地址,此时会受影响,而主键的值一般是很少更新的,当页中的记录发生地址变更的时候,对辅助索引是没有影响的

??最后总结

?要熟练掌握技巧,一定多多坚持练习:骐骥一跃,不能十步;驽马十驾,功在不舍

胖奥特曼悠闲躺着
胖奥特曼悠闲躺着

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ?InnoDB和MyISAM存储引擎对比
    • ?InnoDB中的索引
      • ??MyISAM引擎中的索引
        • ?InnoDB数据检索过程
          • ?MyISAM数据检索过程
          • ??最后总结
          相关产品与服务
          TDSQL MySQL 版
          TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com