mysql 分表操作

背景:项目的原始数据每周10W,需要存储两年的数据,于是考虑将原始数据表进行分表(以id取模24分成24个表)。但是对于分表和合并表之间的一些操作不是很熟悉,特进行一些正式操作前的测试。

一、查询(合并表和分表保持一样的结构和索引,这样可以通过查询合并表,让合并表自己打开查找对应的分表完成查询是可以的)

二、删除和修改(不确定的主要是在这块,不确定能不能通过操作合并表影响到对应的分表),如下进行测试后发现删除是可以的(备注:项目实际中也可以通过update合并表,完成对符合条件的分表数据修改)。

-- 测试分表删除操作机制 START
-- 创建分表1
DROP TABLE t1;
CREATE TABLE t1 (
`id`  int(11) NOT NULL ,
`goods_id`  int(11) NULL DEFAULT NULL COMMENT '宝贝id' ,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM 
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

-- 创建分表2
DROP TABLE t2;
CREATE TABLE t2 (
`id`  int(11) NOT NULL ,
`goods_id`  int(11) NULL DEFAULT NULL COMMENT '宝贝id' ,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM 
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

-- 创建合并表
DROP TABLE t_all;
CREATE TABLE t_all (
`id`  int(11) NOT NULL ,
`goods_id`  int(11) NULL DEFAULT NULL COMMENT '宝贝id' ,
PRIMARY KEY (`id`)
)
ENGINE=MRG_MyISAM UNION(t1,t2) INSERT_method=NO
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci

INSERT INTO t1 VALUES (1,35),(2,56),(3,45);
INSERT INTO t2 VALUES (1,62),(2,53),(3,39);

SELECT * FROM t_all
DELETE FROM t_all WHERE goods_id > 55

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值