MySQL 的聚簇索引

聚簇索引:

  • 聚簇索引:索引跟行记录是一起存储的
  • 非聚簇索引:索引与行记录是分开存储的

MyISAM的索引

  • 其主键索引与普通索引没有本质差异:
  • 有连续聚集的区域单独存储行记录
  • 主键索引的叶子节点,存储主键,与对应行记录的指针
  • 普通索引的叶子结点,存储索引列,与对应行记录的指针
    MySQL 的聚簇索引

InnoDB的索引

  • 没有单独区域存储行记录
  • 主键索引,存储的主键和对应的记录行
  • 非主键索引叶子节点存储的主键
  • 聚簇索引有且只有一个
    MySQL 的聚簇索引

三,总结

  • MyISAM和InnoDB都使用B+树来实现索引:
  • MyISAM的索引与数据分开存储
  • MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别
  • InnoDB的聚集索引和数据行统一存储
  • InnoDB的聚集索引存储数据行本身,普通索引存储主键
  • InnoDB一定有且只有一个聚集索引
  • InnoDB建议使用趋势递增整数作为PK,而不宜使用较长的列作为PK