B+树

链接:
https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html
Mysql索引底层原理
叶子节点冗余了非叶子节点,非叶子节点右指针指向的叶子节点大于等于该非叶子节点,左指针指向的节点小于该非叶子节点

  1. 一个节点可以有多个元素(和二叉树的区别)
  2. 叶子结点存了所有的元素(和b树的区别)
  3. 叶子节点指针相连(和b树的区别)(可以进行字段在一个范围内的条件查询)
    Mysql InnoDB引擎,指针为双向连接

页的概念

  1. 操作系统页的大小4KB
  2. Mysql InnoDB引擎页的大小16KB

索引

InnoDB默认建立主键索引,如果没有主键,就默认使用唯一字段建立索引,如果没有唯一字段,就默认选择一个建立索引。

主键索引(聚簇索引)

聚簇索引是以主键为索引的,索引和值存放在一起。
Mysql索引底层原理

联合索引(非聚簇索引)

联合索引是多个属性维持的一个非聚簇索引(数据页只保留主键)
联合索引只存主键,如果sql为select * ,按照查询到的主键再通过主键索引查询,这一步骤叫做回表。
Mysql索引底层原理
可参考文章:
https://blog.csdn.net/u013308490/article/details/83001060

ps:

  1. Mysql具有查询优化器,如果全表扫描比索引快,不一定使用索引。
  2. 对字段进行操作的都不走索引(例如select * from table where id+1 = 5)

相关文章: