您当前的位置: 首页 > 数据库教程 > MySQL教程 > mysql中merge表存储引擎用法介绍

mysql中merge表存储引擎用法介绍

作者:不详 来源:网络 发布时间: 2011-10-03 17:05 点击:
mysql中merge表存储引擎用法介绍: mysql的merge引擎类型允许你把许多结构相同的表合并为一个表。然后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必须有同样表的定义和结构。 merge表存储引擎在如下这种使用场合会最为有用: 如果

mysql中merge表存储引擎用法介绍

  mysql中merge表存储引擎用法介绍:
  
  mysql的merge引擎类型允许你把许多结构相同的表合并为一个表。然后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必须有同样表的定义和结构。
  
  merge表存储引擎在如下这种使用场合会最为有用:
  
  如果需要把日志纪录不停的录入MySQL数据库,并且每天、每周或者每个月都创建一个单一的表,而且要制作来自多个表的合计查询,MERGE表这时会非常有效。然而,这项功能有局限性。你只能合并MyISAM表而且必须严格遵守相同的表定义的限制。虽然这看起来好像是一个大问题,但是,如果你使用另外一种表类型(例如InnoDB),这种合并可能就不需要.
  
  下面定义如下几个表:
  
  基本表:
  
  CREATE TABLE TEST_MERGE_1(
  
  ID INT(5)NOT NULL,
  
  VALUE VARCHAR(100)NOT NULL,
  
  PRIMARY KEY(ID)
  
  );
  
  CREATE TABLE TEST_MERGE_2(
  
  ID INT(5)NOT NULL,
  
  VALUE VARCHAR(100)NOT NULL,
  
  PRIMARY KEY(ID)
  
  );
  
  MERGE表:
  
  CREATE TABLE TEST_MERGE(
  
  ID INT(5)NOT NULL,
  
  VALUE VARCHAR(100)NOT NULL,
  
  PRIMARY KEY(ID)
  
  )TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(TEST_MERGE_1,TEST_MERGE_2);
  
  说明:
  
  1.此表结构必须与基本表完全一致,包括列名、顺序。UNION表必须同属一个DATABASE。
  
  2.此表类似于SQL中的union机制。
  
  3.基本表类型必须是MyISAM的。
  
  4.可以通过修改.mrg文件来修改MERGE表,每个基本表的名字占一行。注意:修改后要通过FLUSH TABLES刷新表缓存。
  
  5.对基本表的更改可以直接反映在此表上。
  
  6.INSERT_METHOD的取值可以是:0不允许插入FIRST插入到UNION中的第一个表LAST插入到UNION中的最后一个表。(4.0之后可用)
  
  7.定义在它上面的约束没有任何作用,约束是由基本表控制的,例如两个基本表中存在着同样的一个Key值,那么在MERGE表中会有两个一样的Key值。
  
  注意:
  
  1.如果是通过修改.mrg文件的方式来修改MERGE表,那么一定要修改后要通过FLUSH TABLES刷新表缓存,否则修改不会生效。最近犯过一次这样的错误。
  
  2.在数据量、查询量较大的情况下,不要试图使用Merge表来达到类似于Oracle的表分区的功能,会很影响性能。我的感觉是和union几乎等价。
  
  3.查询结果及顺序与创建Merge表时联合表的顺序有关。
  
  假设有这样两条个语句:
  
  INSERT INTO TEST_MERGE_1(ID,VALUE)VALUES(1,’php自学网′);
  
  INSERT INTO TEST_MERGE_2(ID,VALUE)VALUES(1,’http://www.yhzhan.com′);
  
  然后,这个查询:
  
  SELECT*FROM TEST_MERGE WHERE ID=1;
  
  将只会得到一条记录(1,’php自学网′),并不是两条记录,也不会是(1,’http://www.yhzhan.com′)。这是因为ID是PRIMARY KEY,如果在第一个表中查询到记录,则不在后面的表中记录查。如果ID并没有定义唯一性约束,则这个查询会得到两条记录。

分享到:
本文"mysql中merge表存储引擎用法介绍"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(1)
100%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4