MySQL 表连接原理
表连接介绍 表连接也就是我们常说的 JOIN,连接的结果是两张表中符合条件的记录的笛卡尔积,即一张表中符合条件的每一条记录和另一张中符合条件的每一条记录相互匹配的组合。假设有两张表,分别是表 A 和表 B,其中分别有 3 条和 4 条符合连接条件的记录,则这两张表连接的笛卡尔积如下: 对应的 SQL
MySQL 单表访问方法
单表访问方法 先创建一张表: CREATE TABLE `employee` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(100), `employee_id` INT, `english_name` VARCHAR(100)
InnoDB 表空间
独立表空间结构 区(extent) 通常,表空间中的页会非常非常多,为了更好地管理这些页,InnoDB 引入了区(extent)的概念。规定一个区由连续的 64 个页组成,如果默认使用 16 KB 大小的页,那么一个区大小为 1 MB。此外,每 256 个区还会划分成一个组,大概如图所示: 从图中我
MySQL 数据目录
MySQL 数据目录结构 MySQL 服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为数据目录,它对应一个系统变量 datadir: 可以看到,我电脑上的 MySQL 数据目录为 /Users/luyee/apps/
如何更好地使用 InnoDB 索引
索引的代价 我们已经知道使用索引可以加速我们对表中数据的查找过程,但是索引并不是创建得越多越好,而要要遵循一定的规则来创建。 具体来说,创建和维护索引会有空间和时间上的代价: (1) 空间代价 每个索引都对应一棵 B+ 树,对于记录数很大的表,每多创建一个索引,就会多占用很大的一块空间。 (2) 时
InnoDB B+ 树索引
InnoDB 索引 使用索引,可以帮助我们更快地在表中查找到想要的数据。我们通过这篇文章来学习下 InnoDB 的索引,下面对索引的介绍都将围绕这张表展开: create table index_demo ( c1 int, c2 int, c3 char(1),
数组
其实我们最常见的就是数组相关的问题,如: 排序:选择排序、插入排序、归并排序、快速排序等 查找:二分查找法 数据结构:堆、栈、队列等 LeetCode704. 二分查找 二分查找用于在有序数组中查找目标值: class Solution { public static int binaryS
InnoDB 数据页结构
InnoDB 数据页类型 页是 InnoDB 管理存储空间的基本单元,默认大小为 16KB。 注意:这 16KB 是连续的存储空间。 在 InnoDB 中有很多种类型的页,如下表所示:
InnoDB 行格式(row_format)
InnoDB 行格式类型 InnoDB 表中的一行行数据被称为记录,这些记录在磁盘上的存储形式被称为行格式(row_format)。 从 MySQL 5.7 开始,InnoDB 有 4 种行格式: 1. REDUNDANT:最古老的行格式,比较浪费空间。 2. COMPACT:MySQL 5.1 默
MySQL 索引的底层数据结构
索引是用来高效获取数据的排好序的数据结构。 假设我们有一张user表,要在age字段上建索引: id<