MySQL MERGE存储引擎

gpr*_*ime 4 mysql

我在mysql中建立一个mysql引擎类型合并的表,并且想知道我是否必须先创建我想要合并的所有表.例如:

CREATE TABLE t1 (
   a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   message CHAR(20)) ENGINE=MyISAM;

CREATE TABLE t2 (
   a INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   message CHAR(20)) ENGINE=MyISAM;
INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1');
INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2');
CREATE TABLE total (
   a INT NOT NULL AUTO_INCREMENT,
   message CHAR(20), INDEX(a))
   ENGINE=MERGE UNION=(t1,t2) INSERT_METHOD=LAST;
Run Code Online (Sandbox Code Playgroud)

现在,如果我有自动创建t3表的代码,我将不得不修改合并表以将其添加到联合?我会使用ALTER查询吗?

注意:我没有使用MySQL分区,因为我有一个mysql版本5.0.

Qua*_*noi 5

现在,如果我有自动创建t3表的代码,我将不得不修改合并表以将其添加到联合?我会使用ALTER查询吗?

文档:

要将MERGE表重新映射到不同的MyISAM表集合,可以使用以下方法之一:

  • DROPMERGE表并重新创建它.
  • 使用ALTER TABLE tbl_name UNION=(...)来改变底层表的列表.

MySQL5.0.60 开始,也可以使用A LTER TABLE ... UNION=()(即带有空UNION子句)来删除所有基础表.