文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>merge存储引擎应用

merge存储引擎应用

时间:2011-06-08  来源:andrefun

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

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

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

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

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

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

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

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

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

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

相关阅读 更多 +
排行榜 更多 +
正太寿司屋游戏安卓版下载

正太寿司屋游戏安卓版下载

模拟经营 下载
波比的游戏时间第七章手游下载

波比的游戏时间第七章手游下载

休闲益智 下载
像素火影(次世代)千手扉间下载

像素火影(次世代)千手扉间下载

飞行射击 下载