merge存储引擎应用_MySQL

php中文网
发布: 2016-06-01 13:52:02
原创
1372人浏览过

merge存储引擎,也叫做mrg_myisam,可以将同构的表合在一起使用。文档上说的“同构”指的是表定义相同,表的索引相同,但根据测试,索引结构不一样也没有问题。甚至在某些情况下,必须不同才能取得正确的数据。

我们创建两个表m1,m2,并各插入几条数据。

 1 mysql> show create table m1/G<br /> 2 *************************** 1. row ***************************<br /> 3        Table: m1<br /> 4 Create Table: CREATE TABLE `m1` (<br /> 5   `a` int(11) NOT NULL,<br /> 6   `b` int(11) DEFAULT NULL,<br /> 7   PRIMARY KEY (`a`)<br /> 8 ) ENGINE=MyISAM DEFAULT CHARSET=latin1<br /> 9 1 row in set (0.00 sec)<br />10 <br />11 mysql> show create table m2/G<br />12 *************************** 1. row ***************************<br />13        Table: m2<br />14 Create Table: CREATE TABLE `m2` (<br />15   `a` int(11) NOT NULL,<br />16   `b` int(11) DEFAULT NULL,<br />17   PRIMARY KEY (`a`)<br />18 ) ENGINE=MyISAM DEFAULT CHARSET=latin1<br />19 1 row in set (0.00 sec)<br />20 <br />21 mysql> select * from m1;<br />22 +---+------+<br />23 | a | b    |<br />24 +---+------+<br />25 | 1 |    1 |<br />26 | 2 |    2 |<br />27 | 3 |    3 |<br />28 +---+------+<br />29 3 rows in set (0.00 sec)<br />30 <br />31 mysql> select * from m2;<br />32 +---+------+<br />33 | a | b    |<br />34 +---+------+<br />35 | 1 |    1 |<br />36 | 2 |    2 |<br />37 | 3 |    3 |<br />38 +---+------+<br />39 3 rows in set (0.00 sec)
登录后复制

接下来,我们创建一个merge表m,注意,我们没有为m指定任何的key,但是该merge表是可以使用的:

 1 mysql> show create table m/G<br /> 2 *************************** 1. row ***************************<br /> 3        Table: m<br /> 4 Create Table: CREATE TABLE `m` (<br /> 5   `a` int(11) NOT NULL,<br /> 6   `b` int(11) DEFAULT NULL<br /> 7 ) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=(`m1`,`m2`)<br /> 8 1 row in set (0.00 sec)<br /> 9 <br />10 mysql> select * from m;<br />11 +---+------+<br />12 | a | b    |<br />13 +---+------+<br />14 | 1 |    1 |<br />15 | 2 |    2 |<br />16 | 3 |    3 |<br />17 | 1 |    1 |<br />18 | 2 |    2 |<br />19 | 3 |    3 |<br />20 +---+------+<br />21 6 rows in set (0.00 sec)
登录后复制

对m加上primary key(a)之后,毫无疑问,这也是可以使用的,但是因为key是primay key,所以只能检索出一条记录:

 1 mysql> show create table m/G<br /> 2 *************************** 1. row ***************************<br /> 3        Table: m<br /> 4 Create Table: CREATE TABLE `m` (<br /> 5   `a` int(11) NOT NULL,<br /> 6   `b` int(11) DEFAULT NULL,<br /> 7   PRIMARY KEY (`a`)<br /> 8 ) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=(`m1`,`m2`)<br /> 9 1 row in set (0.00 sec)<br />10 <br />11 mysql> select * from m where a=1;<br />12 +---+------+<br />13 | a | b    |<br />14 +---+------+<br />15 | 1 |    1 |<br />16 +---+------+<br />17 1 row in set (0.00 sec)
登录后复制

将primary key改成普通的key之后:

 1 mysql> alter table m add index (a), drop primary key;<br /> 2 Query OK, 0 rows affected (0.00 sec)<br /> 3 Records: 0  Duplicates: 0  Warnings: 0<br /> 4 <br /> 5 mysql> select * from m where a=1;<br /> 6 +---+------+<br /> 7 | a | b    |<br /> 8 +---+------+<br /> 9 | 1 |    1 |<br />10 | 1 |    1 |<br />11 +---+------+<br />12 2 rows in set (0.00 sec)
登录后复制

merge表在很多情况下都可以给我们带来便利,特别是在分表的环境中尤其合适。

欢迎上网易彩票买彩票啊~
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号