您当前的位置: 首页 > 数据库教程 > MySQL教程 > mysqlmerge表介绍

mysqlmerge表介绍

作者:xiaoxiao 来源:未知 发布时间: 2014-07-11 22:24 点击:
在Mysql 数据库 中,Mysql Merge表有点类似于视图。下面就让我们来一起了解一下Mysql Merge表都有哪些优点,希望对您能有所帮助。 Mysql Merge表的优点: A: 分离静态的和动态的数据 B:利用结构接近的的数据来优化查询 C: 查询时可以访问更少的数据 D:更容易维护大

mysqlmerge表介绍

  在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表的查询结果不变。

  他将多个表在逻辑上当作一个表来查询。他建立后有两个文件,

  .frm 表结构定义

  .mrg union表的名字清单

  --

  -- merger表的结构 `test_merge`

  --

  CREATE TABLE IF NOT EXISTS `test_merge` (

  `id` int(5) NOT NULL auto_increment,

  `names` varchar(100) NOT NULL,

  PRIMARY KEY (`id`)

  ) ENGINE=MRG_MyISAM DEFAULT CHARSET=gb2312 INSERT_METHOD=LAST UNION=(`test_merge_1`,`test_merge_2`,`test_merge_3`);

  --

  -- 导出表中的数据 `test_merge`

  --

  INSERT INTO `test_merge` (`id`, `names`) VALUES

  (1, 'aa'),

  (1, 'bb'),

  (1, 'cc');

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

  --

  -- 基本表的结构 `test_merge_1`

  --

  CREATE TABLE IF NOT EXISTS `test_merge_1` (

  `id` int(5) NOT NULL auto_increment,

  `names` varchar(100) NOT NULL,

  PRIMARY KEY (`id`)

  ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=3 ;

  --

  -- 导出表中的数据 `test_merge_1`

  --

  INSERT INTO `test_merge_1` (`id`, `names`) VALUES

  (1, 'aa');

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

  --

  --基本 表的结构 `test_merge_2`

  --

  CREATE TABLE IF NOT EXISTS `test_merge_2` (

  `id` int(5) NOT NULL auto_increment,

  `names` varchar(100) NOT NULL,

  PRIMARY KEY (`id`)

  ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=2 ;

  --

  -- 导出表中的数据 `test_merge_2`

  --

  INSERT INTO `test_merge_2` (`id`, `names`) VALUES

  (1, 'bb');

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

  --

  -- 基本表的结构 `test_merge_3`

  --

  CREATE TABLE IF NOT EXISTS `test_merge_3` (

  `id` int(5) NOT NULL auto_increment,

  `names` varchar(100) NOT NULL,

  PRIMARY KEY (`id`)

  ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 AUTO_INCREMENT=2 ;

  --

  -- 导出表中的数据 `test_merge_3`

  --

  INSERT INTO `test_merge_3` (`id`, `names`) VALUES

  (1, 'cc');

  1. 此表类似于SQL中的union机制。

  2. 此表结构必须与基本表完全一致,包括列名、顺序。UNION表必须同属一个DATABASE。

  3. 基本表类型必须是MyISAM。

  4. 可以通过修改.mrg文件来修改MERGE表,每个基本表的名字占一行。注意:修改后要通过FLUSH TABLES刷新表缓存。

  5. 对基本表的更改可以直接反映在此表上。

  6. INSERT_METHOD的取值可以是: 0 不允许插入 FIRST 插入到UNION中的第一个表 LAST 插入到UNION中的最后一个表。(4.0之后可用)

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