MERGE 存储引擎把一组 MyISAM 数据表当做一个逻辑单元来对待,让我们可以同时对他们进行查询。构成一个 MERGE 数据表结构的各成员 MyISAM 数据表必须具有完全一样的表结构。每一个成员数据表的数据列必须按照同样的顺序定义同样的名字和类型,索引也必须按照同样的顺序和同样的方式定义。假设你有几个日志数据表,他们内容分别是这几年来每一年的日志记录项,他们的定义都是下面这样,YY 代表年份

CREATE TABLE log_YY (   dt DATETIME NOT NULL,   info VARCHAR(100) NOT NULL,   INDEX (dt) ) ENGINE = MyISAM;
CREATE TABLE log_merge (   dt DATETIME NOT NULL,   info VARCHAR(100) NOT NULL,   INDEX(dt) ) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);
SELECT COUNT(*)FROM log_merge;
SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y;

1)、MERGE 数据表可以用来创建一个尺寸超过各个 MyISAM 数据表所允许的最大长度逻辑单元

2)、经过压缩的数据表包括到 MERGE 数据表里。比如说,在某一年结束之后,你应该不会再往相应的日志文件里添加记录,所以你可以用 myisampack 工具压缩它以节省空间,而 MERGE 数据表仍可以像往常那样工作

3)、MERGE 数据表也支持 DELETE 和 UPDATE 操作。INSERT 操作比较麻烦,因为 MySQL 需要知道应该把新数据行插入到哪一个成员表里去。在 MERGE 数据表的定义里可以包括一个 INSERT_METHOD 选项,这个选项的可取值是 NO、FIRST、LAST,他们的含义依次是 INSERT操作是被禁止的、新数据行将被插入到现在 UNION 选项里列出的第一个数据表或最后一个数据表。比如说,以下定义将对 log_merge 数据表的 INSERT 操作被当作对 log_2007 数据表----它是 UNION 选项所列出的最后一个数据表:

CREATE TABLE log_merge(   dt DATETIME NOT NULL,   info VARCHAR(100) NOT NULL,   INDEX(dt) ) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) INSERT_METHOD = LAST;
CREATE TABLE log_2009 LIKE log_2008; //根据旧表创建新表ALTER TABLE log_merge UNION = (log_2004, log_2005, log_2006,log_2007,log_2008,log_2009);

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Android(安卓)- Manifest 文件 详解
  3. Android的Handler机制详解3_Looper.looper()不会卡死主线程
  4. 转:Game Engines for Android(安卓)(Android游戏引擎)
  5. Selector、shape详解(一)
  6. android 引擎
  7. android2.2资源文件详解4--menu文件夹下的菜单定义
  8. Android发送短信方法实例详解
  9. Android(安卓)读取资源文件实例详解

随机推荐

  1. android logo、android开机动画改变详解
  2. android 权限注解库
  3. MaterialRangeSlider双向拖动seekbar
  4. Android日常整理(一)---android返回键、Fra
  5. android中的handler的作用
  6. 键盘弹出以后Activity的布局方式
  7. Android 小项目之--SQLite 使用法门 (附源
  8. Android(安卓)wifi-framework WifiMonito
  9. 在Linux下安装Android(安卓)SDK
  10. Android恶意代码分析与渗透测试