二十三、mysql索引管理详解
一、索引分类 分为 聚集索引 和 非聚集索引 。 聚集索引 每个表有且一定会有一个聚集索引,整个表的数据存储在聚集索引中,mysql索引是采用B+树结构保存在文件中,叶子节点存储主键的值以及对应记录的数据,非叶子节点不存储记录的数据,只存储主键的值。当表中未指定主键时,mysql内部会自动给每条记录添加一个隐藏的rowid字段(默认4个字节)作为主键,用rowid构建聚集索引。 聚集索引在mysql中又叫 主键索引 。 非聚集索引(辅助索引) 也是b+树结构,不过有一点和聚集索引不同,非聚集索引叶子节点存储字段(索引字段)的值以及对应记录主键的值,其他节点只存储字段的值(索引字段)。 每个表可以有多个非聚集索引。 mysql中非聚集索引分为 单列索引 即一个索引只包含一个列。 多列索引(又称复合索引) 即一个索引包含多个列。 唯一索引 索引列的值必须唯一,允许有一个空值。 数据检索的过程 左边为innoDB( 聚簇 )表分布 上面的表中有2个索引:id作为主键索引,name作为辅助索引。 innodb我们用的最多,我们只看图中左边的innodb中数据检索过程: 如果需要查询id=14的数据,只需要在左边的主键索引中检索就可以了。