mysql默认存储引擎,mysql中merge的用法_mysql中merge表存儲引擎用法介紹

 2023-09-25 阅读 20 评论 0

摘要:mysql中merge表存儲引擎用法介紹:mysql的merge引擎類型允許你把許多結構相同的表合並為一個表。然后,你可以執行查詢,從多個表返回的結果就像從一個表返回的結果一樣。每一個合並的表必須有同樣表的定義和結構。merge表存儲引擎在如下這種使用場合會最為有用:my

mysql中merge表存儲引擎用法介紹:

mysql的merge引擎類型允許你把許多結構相同的表合並為一個表。然后,你可以執行查詢,從多個表返回的結果就像從一個表返回的結果一樣。每一個合並的表必須有同樣表的定義和結構。

merge表存儲引擎在如下這種使用場合會最為有用:

mysql默认存储引擎、如果需要把日志紀錄不停的錄入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)

innodb存储引擎,);

MERGE表:

CREATE TABLE TEST_MERGE(

ID INT(5) NOT NULL,

cookie和session区别、VALUE VARCHAR(100) NOT NULL,

PRIMARY KEY(ID)

) TYPE=MRG_MyISAM INSERT_METHOD=LAST UNION=(TEST_MERGE_1,TEST_MERGE_2);

說明:

MySQL聚合函数,1. 此表結構必須與基本表完全一致,包括列名、順序。UNION表必須同屬一個DATABASE。

2. 此表類似於SQL中的union機制。

3. 基本表類型必須是MyISAM的。

4. 可以通過修改.mrg文件來修改MERGE表,每個基本表的名字占一行。注意:修改后要通過FLUSH TABLES刷新表緩存。

mysql索引类型。5. 對基本表的更改可以直接反映在此表上。

6. INSERT_METHOD的取值可以是: 0 不允許插入 FIRST 插入到UNION中的第一個表 LAST 插入到UNION中的最后一個表。(4.0之后可用)

7. 定義在它上面的約束沒有任何作用,約束是由基本表控制的,例如兩個基本表中存在着同樣的一個Key值,那么在MERGE表中會有兩個一樣的Key值。

注意:

数据库merge。1.如果是通過修改.mrg文件的方式來修改MERGE表,那么一定要修改后要通過FLUSH TABLES刷新表緩存,否則修改不會生效。最近犯過一次這樣的錯誤。

2.在數據量、查詢量較大的情況下,不要試圖使用Merge表來達到類似於Oracle的表分區的功能,會很影響性能。我的感覺是和union幾乎等價。

3.查詢結果及順序與創建Merge表時聯合表的順序有關。

假設有這樣兩條個語句:

INSERT INTO TEST_MERGE_1(ID,VALUE) VALUES(1,’php自學網′);

INSERT INTO TEST_MERGE_2(ID,VALUE) VALUES(1,’http://www.phpzixue.cn′);

然后,這個查詢:

SELECT * FROM TEST_MERGE WHERE ID=1;

將只會得到一條記錄(1,’php自學網′),並不是兩條記錄,也不會是(1,’http://www.phpzixue.cn′)。這是因為ID是PRIMARY KEY,如果在第一個表中查詢到記錄,則不在后面的表中記錄查。如果ID並沒有定義唯一性約束,則這個查詢會得到兩條記錄。

學習記錄如下:

CREATE TABLE TEST_MERGE_1( ID INT(5) NOT NULL, VALUE VARCHAR(100) NOT NULL, PRIMARY KEY(ID) )

engine=myisam;

CREATE TABLE TEST_MERGE_2( ID INT(5) NOT NULL, VALUE VARCHAR(100) NOT NULL, PRIMARY KEY(ID) )

engine=myisam;

CREATE TABLE TEST_MERGE( ID INT(5) NOT NULL, VALUE VARCHAR(100) NOT NULL, PRIMARY KEY(ID) )

engine=merge UNION=(TEST_MERGE_1,TEST_MERGE_2) INSERT_METHOD=LAST;

INSERT INTO TEST_MERGE_1(ID,VALUE) VALUES(1,'php自學網');

INSERT INTO TEST_MERGE_2(ID,VALUE) VALUES(1,'http://www.phpzixue.cn');

select * from TEST_MERGE;

SELECT * FROM TEST_MERGE WHERE ID=1;

drop table test_merge,test_merge_1,test_merge_2;

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/94988.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息