首页 新闻 赞助 找找看

mysql 数据存放和主键索引关系

0
悬赏园豆:5 [待解决问题]

innodb引擎中表数据仅被存放在主键索引的叶子节点中吗,还是会有一个二维表存放着一条条的表数据。

凉掰开水啊的主页 凉掰开水啊 | 初学一级 | 园豆:197
提问于:2023-02-09 16:52
< >
分享
所有回答(3)
1

结论:应该是的。
推论:mysql在指定主键的情况下,会根据指定的字段建立聚簇索引,该索引存储主键和对应数据。
如果未指定主键的话,会生成一个不可见的主键,通过该主键建立对应的聚簇索引,存储主键和整条数据。
有且仅有聚簇索引的叶子节点会存放数据,其他索引均存放主键值。
因此,是不存在所谓的二维表的,或者说不叫做二维表。

名字被用了呢 | 园豆:213 (菜鸟二级) | 2023-02-10 10:04

我理解也是 完整的表数据仅存放在叶子节点中,这也为什么innoDB一定要有主键的原因。

支持(1) 反对(0) 凉掰开水啊 | 园豆:197 (初学一级) | 2023-02-10 10:40

感谢!!

支持(0) 反对(0) 凉掰开水啊 | 园豆:197 (初学一级) | 2023-02-10 15:15
1

mysql 默认是索引组织表
数据都是存在聚簇索引里边

蚌壳里夜有多长 | 园豆:204 (菜鸟二级) | 2023-02-10 14:30

感谢!!

支持(0) 反对(0) 凉掰开水啊 | 园豆:197 (初学一级) | 2023-02-10 15:16
0

InnoDB引擎在表中存储数据时,数据并不仅仅被存放在主键索引的叶子节点中。InnoDB引擎的数据存储结构是B+树索引结构,与MyISAM等引擎不同,InnoDB在表中除了主键索引之外,还有一个数据页(Data Page)存储表的数据记录。

具体来说,InnoDB的数据页(Data Page)存储了一条条的表数据记录,每个数据页通常存储多行记录,数据页的大小是可以配置的,通常为16KB或者8KB。InnoDB会根据表中的索引来组织数据页,并在数据页中存储记录的数据。

InnoDB的主键索引(Primary Key Index)是一种特殊的B+树索引,它的叶子节点不仅包含主键值,还包含整行数据。因此,如果通过主键查找数据,InnoDB引擎可以直接从主键索引中读取整行数据,不需要再次读取数据页。如果通过非主键索引查找数据,则需要先从非主键索引中读取主键值,再通过主键索引读取整行数据。

总的来说,InnoDB引擎中表数据并不仅被存放在主键索引的叶子节点中,还会有一个数据页存储着一条条的表数据记录。在查询数据时,InnoDB引擎会通过索引查找数据页,并从数据页中读取相应的数据记录。

心若向阳花自开 | 园豆:275 (菜鸟二级) | 2023-03-08 14:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册