日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL中merge表存储引擎用法

發布時間:2024/9/20 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL中merge表存储引擎用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源:http://www.linuxidc.com/Linux/2012-08/67797.htm

在Mysql數據庫中,Merge表有點類似于視圖。mysql的merge引擎類型允許你把許多結構相同的表合并為一個表。之后,你可以執行查詢,從多個表返回的結果就像從一個表返回的結果一樣。每一個合并的表必須有完全相同表的定義和結構。

Mysql Merge表的優點:
A. 分離靜態的和動態的數據
B. 利用結構接近的的數據來優化查詢
C. 查詢時可以訪問更少的數據
D. 更容易維護大數據集
E. 可以通過修改.mrg文件來修改Merge表,當然也可以用alter進行修改,修改后要通過FLUSH TABLES刷新表緩存,此法可以動態增加減少子表

merge表存儲引擎在如下這種使用場合會最為有用:
如果需要把日志記錄不停的錄入MySQL數據庫,并且每天、每周或者每個月都創建一個單一的表,而且要制作來自多個表的合計查詢,MERGE表這時會非常有效。然而,這項功能有局限性。你只能合并MyISAM表而且必須嚴格遵守相同的表定義的限制。雖然這看起來好像是一個大問題,但是,如果你使用另外一種表類型(例如InnoDB),這種合并可能就不需要.
下面定義如下幾個表:

基本表:
CREATE TABLE TEST_MERGE_1(
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
);
CREATE TABLE TEST_MERGE_2(
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
);
MERGE表:
CREATE TABLE TEST_MERGE(
ID INT(5) NOT NULL,
VALUE VARCHAR(100) NOT NULL,
PRIMARY KEY(ID)
) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(TEST_MERGE_1,TEST_MERGE_2);

上面的TYPE=MRG_MyISAM可能在有些mysql版本下面報錯,修改成engine?MRG_MyISAM

說明:
1. 此表結構必須與基本表完全一致,包括列名、順序。UNION表必須同屬一個DATABASE。
2. 此表類似于SQL中的union機制。
3. 基本表類型必須是MyISAM的。
4. 可以通過修改.mrg文件來修改MERGE表,每個基本表的名字占一行。注意:修改后要通過FLUSH TABLES刷新表緩存。
5. 對基本表的更改可以直接反映在此表上。
6. INSERT_METHOD的取值可以是: 0 不允許插入 FIRST 插入到UNION中的第一個表 LAST 插入到UNION中的最后一個表。(4.0之后可用)
7. 定義在它上面的約束沒有任何作用,約束是由基本表控制的,例如兩個基本表中存在著同樣的一個Key值,那么在MERGE表中會有兩個一樣的Key值。

注意:
1.如果是通過修改.mrg文件的方式來修改MERGE表,那么一定要修改后要通過FLUSH TABLES刷新表緩存,否則修改不會生效。最近犯過一次這樣的錯誤。
2.在數據量、查詢量較大的情況下,不要試圖使用Merge表來達到類似于Oracle的表分區的功能,會很影響性能。我的感覺是和union幾乎等價。
3.查詢結果及順序與創建Merge表時聯合表的順序有關。
假設有這樣兩條個語句:
INSERT INTO TEST_MERGE_1(ID,VALUE) VALUES(1,'ciray');
INSERT INTO TEST_MERGE_2(ID,VALUE) VALUES(1,'blog.csdn.net/ciray');
然后,這個查詢:
SELECT * FROM TEST_MERGE WHERE ID=1;
將只會得到一條記錄(1,'ciray'),并不是兩條記錄,也不會是(1,'blog.csdn.net/ciray')。這是因為ID是 PRIMARY KEY,如果在第一個表中查詢到記錄,則不在后面的表中記錄查。如果ID并沒有定義唯一性約束,則這個查詢會得到兩條記錄。


總結

以上是生活随笔為你收集整理的MySQL中merge表存储引擎用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。