關(guān)于mysql合并表的詳細(xì)介紹
mysql創(chuàng)建合并表和分區(qū)表有點(diǎn)相似,他是mysql 的一種特性,可以把多個(gè)結(jié)構(gòu)相同的myisam表合并為一個(gè)虛表,存續(xù)引擎必須是merge,當(dāng)從合并表中查詢就像從子表中查詢一樣,和視圖有寫相似,當(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 他說明插入值時(shí)是在第一個(gè)表還是最有一個(gè),一般查詢?cè)L問時(shí)是順序訪問union中的表順序的。
當(dāng)刪除了父表,子表任然可以訪問
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)刪除子表父表不能訪問
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)建成功,但是不能正常訪問。
合并表比非合并表含有更多的文件描述符,他的訪問其實(shí)是打開了子表,所以緩存中的數(shù)據(jù)可能對(duì)應(yīng)有多個(gè)文件描述符,在合并表中雖然有可能有相同的值,但是只要查詢找到了第一個(gè)想要的值,查詢就會(huì)停止
相關(guān)文章
一文教你快速學(xué)會(huì)使用DDL對(duì)數(shù)據(jù)庫(kù)和表的操作
SQL是一種操作關(guān)系型數(shù)據(jù)庫(kù)的結(jié)構(gòu)化查詢語(yǔ)言,今天這篇文章將詳細(xì)講述數(shù)據(jù)定義語(yǔ)言DDL對(duì)數(shù)據(jù)庫(kù)和表的相關(guān)操作,有感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧2023-07-07
SQLyog錯(cuò)誤號(hào)碼MySQL?plugin?caching_sha2_password?could?not?
這篇文章主要介紹了SQLyog錯(cuò)誤號(hào)碼?plugin?caching_sha2_password?could?not?be?loaded的解決方法,需要的朋友可以參考下2023-06-06
淺談MySQL中授權(quán)(grant)和撤銷授權(quán)(revoke)用法詳解
下面小編就為大家?guī)硪黄獪\談MySQL中授權(quán)(grant)和撤銷授權(quán)(revoke)用法詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09
mysql中迅速插入百萬(wàn)條測(cè)試數(shù)據(jù)的方法
最近想到創(chuàng)建一個(gè)大量數(shù)據(jù)的測(cè)試環(huán)境,于是找了一下怎么插入100W條數(shù)據(jù),我用的是20個(gè)字段2012-04-04
從創(chuàng)建數(shù)據(jù)庫(kù)到存儲(chǔ)過程與用戶自定義函數(shù)的小感
從創(chuàng)建數(shù)據(jù)庫(kù)到存儲(chǔ)過程與用戶自定義函數(shù)的小感,深入的學(xué)習(xí)mysql2011-09-09

