MySQL 的 Merge 表挺适合做分表统计的,是你把数据按手机号尾号拆成多个表之后,用一个 Merge 表一把抓回来,查询效率还不错,写起来也简单。

Merge 表的结构比较直白:比如你有十张表t_user_0t_user_9,你就可以用下面这段代码搞个总表:

CREATE TABLE t_user (
  tmobile_no char(21) not null,
  tstatus int not null,
  PRIMARY KEY (tmobile_no)
) TYPE=MERGE UNION=(t_user_0, t_user_1, t_user_2, t_user_3, t_user_4, t_user_5, t_user_6, t_user_7, t_user_8, t_user_9);

嗯,写法不复杂,重点是子表结构必须一模一样,不然 Merge 会报错。另外你别忘了主键字段,字段顺序也要一致哦。

用 Merge 表查数据挺方便,但只能读,不能写。想插入、更新的话得单独操作子表。这点要注意。

如果你对CREATE TABLE的语法不太熟,可以看看这篇文章,写得还挺清楚的。

另外,UNION操作的使用也值得一看,跟 Merge 有点类似但用途不太一样,可以参考这篇教程

如果你是那种做电商、用户数据分库分表的,Merge 表会是个不错的统计帮手。