最近在搞一个**项目,每个站点每月的数据量近150--200万条记录,因为采用站点和日期分表机制来减轻服务器的压力,但项目中又必须对全部站点以及跨日期进行查询数据功能。
MERGE存储引擎类型允许把许多结构相同的表合并为一个大表。然后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样,从而不需要进行联表查询。
一、MERGE 存储引擎的特性如下:
1. 类似于 SQL 中的 union机制;
2. 基本的结构必须要完全一致;
3. 基本表的存储引擎类型必须是 MYISAM;
4. MERGE 表会建立两个文件:.frm 表结构定义;.mrg union表的名字清单;
5. 定义在MERGE 表上面的约束没有任何作用,约束是由基本表控制的;
二、实例:
SQL1:建立表1
CREATE TABLE table_1(
ID INT(5) NOT NULL AUTO_INCREMENT,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
)TYPE=MYISAM;
SQL2:建立表2
CREATE TABLE table_2(
ID INT(5) NOT NULL AUTO_INCREMENT,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
)TYPE=MYISAM;
SQL3:建立MERGE表:
CREATE TABLE table_merge(
ID INT(5) NOT NULL AUTO_INCREMENT,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
) TYPE=MERGE UNION=(table_1, table_2) INSERT_METHOD=LAST;
在实际应用中:请注意每个基本的 AUTO_INCREMNET 自增值,就因当时没有考虑好,才导致合并的值查询出来不准确。你可以将 table_1 的 AUTO_INCREMNET = 1; table_2 的AUTO_INCREMNET= 1500001 ........