MySql学习笔记第2天(索引)

99 阅读1分钟

索引的出现是为了提高数据的查询效率,就像是书的目录一样

索引的常见模型

InnoDB 的索引模型

在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表。InnoDB使用了B+树索引模型,所以数据都是存储在B+树种的。

每一个索引在InnoDB里面对应一颗B+树。

索引类型分为主键索引和非主键索引。

  • 主键索引的叶子节点存的是整行数据。在InnoDB里,主键索引也被称为聚簇索引(clustered index)。
  • 非主键索引的叶子节点内容是主键的值。在InnoDB里,非主键索引也被称为二级索引(secondary index)。

基于主键索引和普通索引的查询有什么区别:

  • 主键查询方式只需要搜索ID这颗B+树。
  • 普通索引查询方式则需要先搜索k索引树,得到主键的值,然后再搜索ID这颗B+树。这个过程称为回表。

非主键索引的查询需要多扫描一颗索引树。

索引维护

B+树为了维护索引有序性,在插入新值的时候需要做必要的维护。维护过程就是B+树的增删过程的分裂与合并。