MyISAM主键索引树和二级索引树

简介: MyISAM主键索引树和二级索引树

MyISAM:数据和索引没有放在一块,叫做 非聚集索引,不可能回表

InnoDB:数据和索引存放在一块,叫聚集索引 ,会涉及回表

此时假设一个场景:uid是主键,有主键索引树,name有索引,创建二级索引树

image.png

当前场景下的主键索引树如下,B+树非叶子节点上只有索引值,叶子节点上有索引值和数据地址

image.png

MyISAM索引树原理图如下:

image.png

当前场景下的二级索引树如下:

InnoDB二级索引树叶子节点上是主键值uid,而MyISAM存的则是数据的地址

image.png

当前场景下,主键索引树和二级索引树两者之间的联系:

image.png

在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复,MyISAM二级索引树结构图如下:

image.png

当前场景下,若使用MyISAM存储引擎查找数据,以name作为索引,到二级索引树上查找结果(构造索引树的过程也涉及磁盘I/O),如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。

MyISAM存储引擎,B+树叶子节点存储关键字和数据地址,也就是说索引关键字和数据没有在一起存放,体现在磁盘上,表的数据存放在*.MYD文件中,表的索引存放在*.MYI文件中。



相关文章
|
6月前
|
存储 关系型数据库 索引
9. 什么是聚簇索引什么是非聚簇索引 ?
**聚簇索引**是指数据和索引存储在一起,常见于InnoDB存储引擎的主键索引。**非聚簇索引**则相反,数据和索引分开存储,如MyISAM引擎中,索引只包含数据行指针。示意图展示了两种索引的区别。
51 1
|
6月前
|
存储 关系型数据库 MySQL
聚簇索引与非聚簇索引b+树实现的区别
聚簇索引与非聚簇索引b+树实现的区别
77 0
|
6月前
|
存储 索引
聚集索引与非聚集索引的区别
聚集索引与非聚集索引的区别
|
6月前
|
存储 关系型数据库 数据库
|
6月前
|
存储 SQL 关系型数据库
InnoDB主键索引树和二级索引树
InnoDB主键索引树和二级索引树
83 0
InnoDB主键索引树和二级索引树
|
存储 数据库 索引
什么是聚簇索引什么是非聚簇索引 ?
什么是聚簇索引什么是非聚簇索引 ?
96 0
|
存储 Oracle 关系型数据库
主键索引是聚集索引还是非聚集索引
在聚簇索引中,主键索引的叶子节点存储的就是数据行本身,因此主键索引也被称为聚簇索引。在这种情况下,主键索引的物理顺序与数据行的物理顺序是一致的,这样可以提高查询性能和范围查询的效率。
134 0
|
存储 数据库 索引
聚簇索引与非聚簇索引
聚簇索引和非聚簇索引是关系数据库中常用的两种索引类型。它们在数据存储和索引组织方式上存在一些区别。下面将详细介绍聚簇索引和非聚簇索引的定义、特点以及适用场景。
428 0
|
存储 数据库 索引
聚簇索引什么是非聚簇
聚簇索引和非聚簇索引是数据库中常见的两种索引类型,它们在索引数据的组织方式和存储结构上有所不同。下面我将详细介绍聚簇索引和非聚簇索引的概念、特点和使用场景。
78 0
|
存储 算法 NoSQL
InnoDB为什么采用B+树作为索引模型
InnoDB为什么采用B+树作为索引模型
107 0