美文网首页
mysql索引(一)

mysql索引(一)

作者: 长征路上的IT男 | 来源:发表于2018-09-04 16:25 被阅读0次

    1.myisam索引

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

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

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

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

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

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

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

    2.innodb索引

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

    没有单独区域存储行记录

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

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

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

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

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

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

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

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

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

    相关文章

      网友评论

          本文标题:mysql索引(一)

          本文链接:https://www.haomeiwen.com/subject/rdtnwftx.html