首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL数据库,关系型数据库中的数据组织

MySQL数据库,关系型数据库中的数据组织

作者头像
用户1289394
发布于 2022-02-15 15:45:31
发布于 2022-02-15 15:45:31
3.1K0
举报
文章被收录于专栏:Java学习网Java学习网

关系型数据库中的数据组织

关系型数据库中,数据组织涉及到两个最基本的结构:表与索引。表中存储的是完整记录,⼀般有两种组织形式:堆表(所有的记录⽆序存储),或者是聚簇索引表(所有的记录,按照记录主键进⾏排序存储)。索引中存储的是完整记录的⼀个⼦集,⽤于加速记录的查询速度,索引的组织形式,⼀般均为B+树结构。

有了这些基本知识之后,接下来让我们创建⼀张测试表,为表新增⼏个索引,然后插⼊⼏条记录,最后看看表的完整数据组织、存储结构式怎么样的。(注意:下⾯的实例,使⽤的表的结构为堆表形式,这也是Oracle/DB2/PostgreSQL等数据库采⽤的表组织形式,⽽

不是InnoDB引擎所采⽤的聚簇索引表。其实,表结构采⽤何种形式并不重要,最重要的是理解下⾯章节的核⼼,在任何表结构中均适⽤)

create table t1 (a int primary key, b int, c int, d int, e

varchar(20));

create index idx_t1_bcd on t1(b, c, d);

insert into t1 values (4,3,1,1,’d’);

insert into t1 values (1,1,1,1,’a’);

insert into t1 values (8,8,8,8,’h’):

insert into t1 values (2,2,2,2,’b’);

insert into t1 values (5,2,3,5,’e’);

insert into t1 values (3,3,2,2,’c’);

insert into t1 values (7,4,5,5,’g’);

insert into t1 values (6,6,4,4,’f’);

t1表的存储结构如下图所⽰(只画出了idxt1bcd索引与t1表结构,没有包括t1表的主键索引):

简单分析⼀下上图,idxt1bcd索引上有[b,c,d]三个字段(注意:若是InnoDB类的聚簇索引表,idxt1bcd上还会包括主键a字段),不包括[a,e]字段。idxt1bcd索引,⾸先按照b字段排序,b字段相同,则按照c字段排序,以此类推。记录在索引中按照[b,c,d]排序,但是在堆表上是乱序的,不按照任何字段排序。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档