關(guān)于mysql合并表的詳細(xì)介紹
mysql創(chuàng)建合并表和分區(qū)表有點(diǎn)相似,他是mysql 的一種特性,可以把多個(gè)結(jié)構(gòu)相同的myisam表合并為一個(gè)虛表,存續(xù)引擎必須是merge,當(dāng)從合并表中查詢就像從子表中查詢一樣,和視圖有寫(xiě)相似,當(dāng)創(chuàng)建合并表時(shí)也有自己的frm和mrg 文件。
合并表創(chuàng)建方法
create table t3(a int primary key );
create table t4(a int primary key );
create table mrg(a int primary key ) union=(t3,t4) insert_method=last;
這里需要注意,當(dāng)2個(gè)子表中有相同的列時(shí),創(chuàng)建合并表并不會(huì)唯一
mysql> select * from mrg;
+---+
| a |
+---+
| 1 |
| 2 |
| 2 |
| 3 |
| 4 |
+---+
5 rows in set (0.00 sec)
mysql> select * from t3;
+---+
| a |
+---+
| 1 |
| 2 |
+---+
2 rows in set (0.00 sec)
mysql> select * from t4;
+---+
| a |
+---+
| 2 |
| 3 |
| 4 |
+---+
3 rows in set (0.00 sec)
a=2的列在父表里面并不唯一即使你使用了PRIMARY KEY 約束也一樣。
insert_method=last選項(xiàng)有2個(gè)值,first 和 last 他說(shuō)明插入值時(shí)是在第一個(gè)表還是最有一個(gè),一般查詢?cè)L問(wèn)時(shí)是順序訪問(wèn)union中的表順序的。
當(dāng)刪除了父表,子表任然可以訪問(wèn)
mysql> drop table mrg;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t3;
+---+
| a |
+---+
| 1 |
| 2 |
+---+
2 rows in set (0.00 sec);
當(dāng)刪除子表父表不能訪問(wèn)
mysql> drop table t3;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from mrg;
ERROR 1168 (HY000): Unable to open underlying table which is differently define
or of non-MyISAM type or doesn't exist;
同時(shí)如果你的子表定義不一致的話,父表能創(chuàng)建成功,但是不能正常訪問(wèn)。
合并表比非合并表含有更多的文件描述符,他的訪問(wèn)其實(shí)是打開(kāi)了子表,所以緩存中的數(shù)據(jù)可能對(duì)應(yīng)有多個(gè)文件描述符,在合并表中雖然有可能有相同的值,但是只要查詢找到了第一個(gè)想要的值,查詢就會(huì)停止
相關(guān)文章
MySQL 的啟動(dòng)選項(xiàng)和系統(tǒng)變量實(shí)例詳解
這篇文章主要介紹了MySQL 的啟動(dòng)選項(xiàng)和系統(tǒng)變量,結(jié)合實(shí)例形式詳細(xì)分析了MySQL 啟動(dòng)選項(xiàng)和系統(tǒng)變量具體原理、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05數(shù)據(jù)庫(kù)sql語(yǔ)句優(yōu)化
今天小編就為大家分享一篇關(guān)于數(shù)據(jù)庫(kù)sql語(yǔ)句優(yōu)化,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01mysql server is running with the --skip-grant-tables option
今天在mysql中新建數(shù)據(jù)庫(kù)提示The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,原來(lái)是數(shù)據(jù)中配置的--skip-grant-tables,這樣安全就降低了,這個(gè)一般當(dāng)忘記root密碼的時(shí)候需要這樣操作2017-07-07MySQL提取Json內(nèi)部字段轉(zhuǎn)儲(chǔ)為數(shù)字
本文主要介紹了MySQL提取Json內(nèi)部字段轉(zhuǎn)儲(chǔ)為數(shù)字,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07Mysql實(shí)現(xiàn)全文檢索、關(guān)鍵詞跑分的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Mysql實(shí)現(xiàn)全文檢索、關(guān)鍵詞跑分的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09