首頁 > 資料庫 > mysql教程 > merge存储引擎应用_MySQL

merge存储引擎应用_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-01 13:52:02
原創
1202 人瀏覽過

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表在很多情况下都可以给我们带来便利,特别是在分表的环境中尤其合适。

欢迎上网易彩票买彩票啊~
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
保存hosts,我怎麼是一個另存為?
來自於 1970-01-01 08:00:00
0
0
0
儲存hosts時只能另存為是怎麼回事?
來自於 1970-01-01 08:00:00
0
0
0
保存會報錯,保存不了
來自於 1970-01-01 08:00:00
0
0
0
vim裡如何修改dd預設儲存的暫存器
來自於 1970-01-01 08:00:00
0
0
0
站長工具箱,開啟hosts提示另存,另存哪裡
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板