38 是否要使用memory引擎的表
38 是否要使用 memory 引擎的表 内存表的数据组织结构 create table t1(id int primary key, c int) engine=Memory; create table t2(id int primary key, c int) engine=innodb; insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0); insert into t2 values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0); 可以看到,内存表 t1 的返回结果里面 0 在最后一行,在 innodb 表 t2 的返回结果, 0 在第一行,二者的差别要从他们的 主键索引 的组织方式说起。 表 t2 是 innodb 表,是主键索引 id 的方式, innodb 表的数据放在主键索引树上,是一个 B+ tree ,如下 主键索引上的值是 有序 存储的,在 select * 的时候,就会按照叶子节点上从左往右扫描,所以结果里 0 在第一行。 与 innodb 不同, memory 引擎的数据和索引是分开的, 可以看到,内存表的数据部分以数组的方式单独存放,而主键 id 索引里,存的是每个数据的位置