MySQL 的聚簇索引
聚簇索引:
- 聚簇索引:索引跟行记录是一起存储的
- 非聚簇索引:索引与行记录是分开存储的
MyISAM的索引
- 其主键索引与普通索引没有本质差异:
- 有连续聚集的区域单独存储行记录
- 主键索引的叶子节点,存储主键,与对应行记录的指针
- 普通索引的叶子结点,存储索引列,与对应行记录的指针
InnoDB的索引
- 没有单独区域存储行记录
- 主键索引,存储的主键和对应的记录行
- 非主键索引叶子节点存储的主键
- 聚簇索引有且只有一个
三,总结
- MyISAM和InnoDB都使用B+树来实现索引:
- MyISAM的索引与数据分开存储
- MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别
- InnoDB的聚集索引和数据行统一存储
- InnoDB的聚集索引存储数据行本身,普通索引存储主键
- InnoDB一定有且只有一个聚集索引
- InnoDB建议使用趋势递增整数作为PK,而不宜使用较长的列作为PK