MySQL Merge表的使用注意事项和优点介绍

发表于:2013-1-25 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  在Mysql数据库中,Mysql Merge 表有点类似于视图。下面就让我们来一起了解一下Mysql Merge表都有哪些优点。

  Mysql Merge表的优点:

  A:分离静态的和动态的数据

  B:利用结构接近的的数据来优化查询

  C:查询时可以访问更少的数据

  D:更容易维护大数据集

  E:可以通过修改.mrg文件来修改Merge表,当然也可以用alter进行修改,修改后要通过FLUSH TABLES刷新表缓存,此法可以动态增加减少子表

  创建方法,例:

mysql>CREATE TABLE t1(a INT NOT NULL PRIMARY KEY)ENGINE=MyISAM;
mysql>CREATE TABLE t2(a INT NOT NULL PRIMARY KEY)ENGINE=MyISAM;
mysql>CREATE TABLE mrg(a INT NOT NULL PRIMARY KEY)ENGINE=MERGE UNION=(t1,t2)        INSERT_METHOD=LAST;

  下面添加测试数据

mysql>INSERT INTO t1(a) VALUES(1),(2);
mysql>INSERT INTO t2(a)VALUES(1),(2);

  查询一下看看结果

mysql>SELECT a FROM mrg;

  结果会显示出t1,t2两个表中的数据

  +------+
  |  a     |
  +------+
  |       1|
  |       2|
  |       1|
  |       2|
  +------+

  对于merge表,需要注意的是:

  1、每个子表的结构必须一致,主表和子表的结构需要一致。

  2、每个子表的索引在merge表中都会存在,所以在merge表中不能根据该索引进行唯一性检索。

  3、子表需要是MyISAM引擎。

  4、REPLACE在merge表中不会工作

  5、AUTO_INCREMENT 不会按照你所期望的方式工作。

  创建Mysql Merge表的参数 INSERT_METHOD有几个参数 。

  LAST  如果你执行insert 指令来操作merge表时,插入操作会把数据添加到最后一个子表中。FIRST  同理,执行插入数据时会把数据添加到第一个子表中。

  比如本例,对merge表执行插入操作

mysql>INSERT INTO mrg(a)VALUES(18);

  查询一下

mysql>SELECT a FROM t2;

  结果你会发现18出现在t2表中。

  ---------------------------------------------------------------

  如果你对mrg表或者子表进行了DROP操作,那将有可能会产生些不可预知的情况。

  如果删除mrg表,那么各个子表间将不会有联系。但是如果删除其中的任一子表,对于GNU/LINUX来说,merge表结构及数据仍然存在。

mysql>DROP TABLE t1,t2;
mysql>SELECT a FROM mrg;

  结果你会发现mrg表的查询结果不变。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号