Mysql数据库索引底层数据结构和算法

索引

索引是帮助Mysql高效获取数据的排好序的数据结构

常用的数据结构

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

聚集索引和非聚集索引

  • 聚集索引:叶子节点直接存储这条数据的其他字段
  • 非聚集索引:叶子节点的data指向该条数据的物理地址

联合索引

数据库引擎

![在这里插入图片描述]( https://img-blog.csdnimg.cn/fa61ecc756884913967870c48d18ff70.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATEFMQUxBMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16)

MyISAM

  • 非聚集索引
    ".MYI"文件存储的索引(B+树)
    ".MYD"文件存储的数据

![在这里插入图片描述]( https://img-blog.csdnimg.cn/ddf2f1565a864b9e94b0d1e50f21ba25.png?x-oss-process=image/watermark ,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATEFMQUxBMjAxNw==,size_20,color_FFFFFF,t_70,g_se,x_16)

InnoDB

  • 只有主键为聚集索引,其他非主键索引为非聚集索引
  • 为什么推荐InnoDB必须建主键?推荐整型的自增主键
    • InnoDB是用的B+树来保存数据,如果不建主键,mysql会选取一列值都不相同的列做为主键,如果没有找到会创建一个隐形列为主键存储数据
    • 自增插入效率高,避免分裂和树做平衡
posted @ 2022-02-12 21:22  LALALA823  阅读(76)  评论(0)    收藏  举报