侧边栏壁纸
博主头像
月伴飞鱼 博主等级

行动起来,活在当下

  • 累计撰写 126 篇文章
  • 累计创建 31 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

InnoDB的索引结构和MyISAM有区别吗?MyISAM有聚簇索引吗?

月伴飞鱼
2025-03-20 / 0 评论 / 1 点赞 / 9 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1. InnoDB 和 MyISAM 索引结构的区别

  • InnoDB

    • 聚簇索引:InnoDB 默认使用聚簇索引(Clustered Index)。在聚簇索引中,数据和索引存储在同一个数据结构(B+ 树)中,叶子节点存储实际的数据行,而非叶子节点存储的是索引键。

    • 数据和索引存储在一起:由于数据存储在索引的叶子节点中,查询基于聚簇索引时不需要回表。也就是说,在基于主键查询时,索引本身就包含了数据。

    • 主键索引:每张表只能有一个聚簇索引,通常这是表的主键(如果没有显式定义主键,InnoDB 会自动选择一个唯一索引作为主键)。

  • MyISAM

    • 非聚簇索引:MyISAM 使用非聚簇索引(Non-clustered Index)。在 MyISAM 中,数据和索引是存储在不同的文件中的,索引存储的是数据的地址(指针),而不是数据本身。

    • 索引和数据分离:MyISAM 的叶子节点并不存储实际的数据,而是存储数据的物理地址。因此,在查询时,必须通过索引找到数据的物理位置,再回表获取数据。

2. MyISAM 是否有聚簇索引

  • MyISAM 不支持聚簇索引。因为 MyISAM 的索引和数据是分开的,所有的索引都是 非聚簇索引。MyISAM 不会将数据行本身存储在索引的叶子节点中,而是将索引与数据分开存储,所以没有聚簇索引的概念。

3. 总结:

  • InnoDB 支持 聚簇索引,数据和索引存储在一起,查询效率更高(特别是主键查询)。

  • MyISAM 使用 非聚簇索引,索引和数据分开存储,查询时需要回表,性能相对较低。

公众号.png

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin
博主关闭了所有页面的评论