本文共 692 字,大约阅读时间需要 2 分钟。
mysql 5.7.25,ubuntu 16.04
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
在innodb中,索引默认使用B+树模型。
在innodb中,索引可分为聚簇索引和非聚簇索引。聚簇索引即主键索引。同时,在innodb中,整个数据表根据主键形成B+树模型。主键为键,主键所对应的每一行数据作为B+树的叶子节点。
即非主键索引或二级索引。每一个非聚簇索引就是一个B+树。非聚簇索引的组织结构为:非叶子节点为索引字段的值,叶子节点为索引所对应行的主键值。
按索引进行搜索能提高数据查找速度。
搜索流程如下:(1)根据WHERE语句的索引搜索条件搜索B+树中符合相应条件的叶子节点,从而定位where条件所对应的数据行的主键值;(2)若SELECT语句中所涉及的字段在索引中没有,则需要进行回表操作,即根据步骤(1)得出的主键值是搜索数据表中对应的行,再获取SELECT所需字段;(3)若SELECT语句中涉及的字段在查询所使用的索引中就存在,就不需要进行回表,从而直接获取索引中对应的字段。其中,由于步骤(3)所使用的索引就包含SELECT语句所提取的字段,步骤(3)中所涉及的索引就是覆盖索引。MySQL新引入的功能,若在使用联合索引过程中,根据最左前缀的原则命中了联合索引后,若WHERE语句的下一个字段也在联合索引中,则对之前联合索引所命中的主键值进行进一步过滤,以减少回表操作。
转载地址:http://ffkia.baihongyu.com/