[MySQL] innodb表为varchar字段建立索引后的查询过程
InnoDB是聚集索引方式,因此数据和索引都存储在同一个文件里。
首先InnoDB会根据主键ID作为KEY建立索引B+树,如左下图所示,而B+树的叶子节点存储的是主键ID对应的数据
比如在执行select * from user_info where id=15这个语句时
InnoDB就会查询这颗主键ID索引B+树,找到对应的user_name='Bob'。
这是建表的时候InnoDB就会自动建立好主键ID索引树,这也是为什么MySQL在建表时要求必须指定主键的原因。
当我们为表里某个字段加索引时InnoDB会怎么建立索引树呢?
比如我们要给user_name这个字段加索引,那么InnoDB就会建立user_name索引B+树,节点里存的是user_name这个KEY,叶子节点存储的数据的是主键KEY。注意,叶子存储的是主键KEY!
拿到主键KEY后,InnoDB才会去主键索引树里根据刚在user_name索引树找到的主键KEY查找到对应的数据。
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网