一 Mysql MERGE 引擎 存储引擎必须是MyISAM
例子:
创建user1,user2表:
CREATE TABLE user1 (
id int(10) unsigned NOT NULL,
name VARCHAR(50) NOT NULL,
sex TINYINT(10) unsigned NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE user2 LIKE user1;
插入测试数据:
INSERT INTO user1 (name, sex) VALUES('张三', 0);
INSERT INTO user2 (name, sex) VALUES('李四', 1);
创建合并表:
CREATE TABLE users (
id int(10) unsigned NOT NULL,
name VARCHAR(50) NOT NULL,
sex TINYINT(1) unsigned NOT NULL,
PRIMARY KEY (id)
) ENGINE=MERGE DEFAULT CHARSET=utf8 union=(user1,user2) insert_method=last;
查询即可
二 标准的 UNION用法
例子:
SELECT xxx FROM (
(SELECT xx FROM table1 WHERE type=1) union
(SELECT xx FROM table1 WHERE type=1) union
(SELECT xx FROM table1 WHERE type=1) union
(SELECT xx FROM table1 WHERE type=1)
) t WHERE t.xxx....
三 Mysql 表分区,5.1 版本后才支持
分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。