MySQL合并表的详细介绍

MySQL创建合并表和分区表有点相似,他是MySQL的一个特点,可以把多个结构相同的MyISAM表进入一个虚拟的表,它的引擎必须合并,当合并从查询表中查询的表和视图是写类似,当创建合并表也有自己的FRM和MRG文件。
合并表创建方法
创建表T3(int主键);
创建表T4(int主键);
Create table MRG (a int primary key) union= (T3, T4) insert_method=last;
需要注意的是,在2个子表中有相同的列时,合并表的创建不是唯一的。
MySQL >选择*从MRG;
+——+
|一|
+——+
1 | |
2 | |
2 | |
3 | |
4 | |
+——+
5行(0秒)
从T3选择*;
+——+
|一|
+——+
1 | |
2 | |
+——+
2行(0秒)
从T4中选择*;
+——+
|一|
+——+
2 | |
3 | |
4 | |
+——+
3行(0秒)
即使您使用主键约束,但在父表中的A = 2的列也不是唯一的。
的insert_method =最后一个选项有2个值,第一个和最后一个。它表明当插入值位于第一表或最多时,一般查询访问是对表中的联合的顺序访问。
当父表中删除,可以访问的数据库
MySQL >删除表MRG;
查询OK,0行受影响(0秒)
从T3选择*;
+——+
|一|
+——+
1 | |
2 | |
+——+
2行(0秒);
当删除父不能访问数据库
删除表T3;
查询OK,0行受影响(0秒)
MySQL >选择*从MRG;
错误1168(hy000):无法打开数据表是不同的定义
或非MyISAM类型或不存在;
同时,如果你的数据库的定义是不一致的,父表可以创建成功,但不能正常访问。

合并表合并表包含多个文件描述符,他的访问是打开表,因此缓存中的数据可能对应多个文件描述符,在合并表中可能具有相同的值,但只要查询找到第一个所需的值,查询就会停止。