zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL数据库,详解索引分类

2023-04-18 14:50:05 时间

索引分类

分为聚集索引和⾮聚集索引。

聚集索引

每个表有且⼀定会有⼀个聚集索引,整个表的数据存储在聚集索引中,mysql索引是采⽤B+树结构保存在⽂件中,叶⼦节点存储主键的值以及对应记录的数据,⾮叶⼦节点不存

储记录的数据,只存储主键的值。当表中未指定主键时,mysql内部会⾃动给每条记录添加⼀个隐藏的rowid字段(默认4个字节)作为主键,⽤rowid构建聚集索引。

聚集索引在mysql中又叫主键索引。

⾮聚集索引(辅助索引)

也是b+树结构,不过有⼀点和聚集索引不同,⾮聚集索引叶⼦节点存储字段(索引字段)的值以及对应记录主键的值,其他节点只存储字段的值(索引字段)。

每个表可以有多个⾮聚集索引。mysql中⾮聚集索引分为

单列索引

即⼀个索引只包含⼀个列。

多列索引(⼜称复合索引)

即⼀个索引包含多个列。

唯⼀索引

索引列的值必须唯⼀,允许有⼀个空值。

数据检索的过程

看⼀张图:

上⾯的表中有2个索引:id作为主键索引,name作为辅助索引。

innodb我们⽤的最多,我们只看图中左边的innodb中数据检索过程:

如果需要查询id=14的数据,只需要在左边的主键索引中检索就可以了。

如果需要搜索name='Ellison'的数据,需要2步:

1. 先在辅助索引中检索到name='Ellison'的数据,获取id为14

2. 再到主键索引中检索id为14的记录辅助索引相对于主键索引多了第⼆步。