Mysql MyISAM引擎分表(水平拆分)

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了
在这里插入图片描述

赵日天第三次用这个编辑器写:哈哈哈哈!越来越熟练,还是有很多话想说,又表达不出来,难受,看代码吧!再见;

哦,还有一句话要说:白嫖不好,谢谢;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值