MERGE 表本身并不存储数据,仅仅只是为多个基表提供一个同意的存储入口。所以在创建 MERGE 表的时候, MySQL 只会生成两个较小的文件,一个是.frm 的结构定义文件,还有一个.MRG 文件,用于存放参与 MERGE 的表的名称(包括所属数据库 schema)。之所以需要有所属数据库的 schema,是因为 MERGE 表不仅可以实现将 Merge 同一个数据库中的表,还可以Merge 不同数据库中的表,只要是权限允许,并且在同一个 mysqld 下面,就可以进行 Merge。MERGE 表在被创建之后,仍然可以通过相关命令来更改底层的基表。
MERGE 表不仅可以提供读取服务,也可以提供写入服务。要让 MERGE 表提供可 INSERT服务,必须在在表被创建的时候就指明 INSERT 数据要被写入哪一个基表,可以通过insert_method 参数来控制。如果没有指定该参数,任何尝试往 MERGE 表中 INSERT 数据的操作,都会出错。此外,无法通过 MERGE 表直接使用基表上面的全文索引,要使用全文索引 ,必须通过基表本身的存取才能实现。