mysql索引(一)

1.myisam索引

myisam的索引与行记录是分开存储的.

主键索引与普通索引没有本质区别:

有连续聚集区域单独存储行记录

主键索引叶子节点,存储主键,与对应行记录的指针

普通索引的叶子节点,存储索引列,与行记录对应的指针

换句话说,myisam表可以没有主键

主键索引和普通索引是两颗独立的b+树,索引树与行记录是单独的两颗树

2.innodb索引

innodb的主键索引和行记录存储在一起,所以称为聚集索引

没有单独区域存储行记录

主键索引叶子节点,存储主键,与对应行记录,而不是指针。

所以innodb的pk索引查询是非常快的

因为这个特性,所以innodb表必须有聚集索引:

1.如果表定义了pk,pk就是聚集索引

2.如果表没定义pk,第一个非空unique列为聚集索引

3.否则,innodb会创建一个隐藏的row-id作为聚集索引

聚集索引,也只能有一个,因为数据行在物理磁盘上只能有一份聚集存储

innodb的普通索引可以有多个,它与聚集索引则不同的是:

叶子节点存储主键(也不是指针)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容