1.应用场景及介绍
应用场景
1.查的多,写的少(基于引擎特性,索引文件与元数据文件分别存储);
2.数据量过高;
功能介绍
MyISAM引擎分表功能是 基于创建多个子表,由主表关联而形成的分表功能,该主表可以视为空壳,来引导存储到子表
2.创建子表
/**表1*/
CREATE TABLE `union_user_1` (
`id` bigint(21) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
/**表2*/
CREATE TABLE `union_user_2` (
`id` bigint(21) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
/**表3*/
CREATE TABLE `union_user_3` (
`id` bigint(21) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
3.源数据导入
把源数据写入到新创建的子表中
INSERT INTO uion_user_1 (id,`name`) SELECT id , `name` FROM table_name WHERE id % 2 = 0
INSERT INTO uion_user_2 (id,`name`) SELECT id , `name` FROM table_name WHERE id % 2 = 1
4.创建主表并关联子表
UNION (
uion_user_1
,uion_user_2
,uion_user_3
) 为关联的子表
INSERT_METHOD = LAST 设置数据会存储到最后一张子表中
CREATE TABLE `user` (
`id` bigint(21) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL
PRIMARY KEY (`id`)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`uion_user_1`,`uion_user_2`,`uion_user_3`);
查询就ok了