mysql merge表_mysql 分表策略及 MERGE 表的使用

对于多个表,我们常常需要联合查询,那么使用 merge 表就会非常有效

MERGE存储引擎把一组MyISAM数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询需要注意的是,只有 MyISAM 引擎才支持 MERGE 表的特性

merge 表的创建

例如有下面两个表:

CREATE TABLE `t1` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`log` varchar(45) ,

PRIMARY KEY (`id`)

) ENGINE=MyISAM;

CREATE TABLE `t2`(

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`log` varchar(45) ,

PRIMARY KEY (`id`)

) ENGINE=MyISAM;

无论表中是否已有数据,我们都可以创建 MERGE 表:

CREATE TABLE `t` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`log` varchar(45) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MERGE UNION=(t1, t2) INSERT_METHOD=LAST;

上述创建语句中,UNION 说明了 MERGE 表是哪几个表的联合

INSERT_METHOD 说明了 MERGE 表的插入方式,可以取以下值:MERGE 表 INSERT_METHOD 取值取值意义

0不允许插入

FIRST新数据插入到 UNION 中的第一个表

LAST新数据插入到 UNION 中的最后一个表

可以通过 alter table 的方式修改上述设定

alter table t ENGINE=MERGE UNION=(t1,t2,t3) INSERT_METHOD=FIRST;

MERGE 表的查询

当我们执行:

select * from t;

从效果上看,和执行:

(select * from t1) union

(select * from t2)

是一样的

MERGE 表的删除

删除 MERGE 表不会对子表造成任何影响

如果要删除子表,则必须首先使用 alter table 语句将子表从 MERGE 表中的 UNION 中去除,然后才可以删除子表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值