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

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

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);

說明:

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,’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;

mysql中merge的用法_mysql中merge表存儲引擎用法介紹相关推荐

  1. mysql的explain怎么看_mysql中explain用法详解

    如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序. explain的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 1 ...

  2. mysql range用法_MySQL中Explain的用法总结(详细)

    本篇文章给大家带来的内容是关于MySQL中Explain的用法总结(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 执行计划(query Execution plan) 语法e ...

  3. mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法

    在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...

  4. mysql聚合函数count用法_MySQL中聚合函数count的使用和性能优化技巧

    本文的环境是Windows 10,MySQL版本是5.7.12-log 一. 基本使用 count的基本作用是有两个: 统计某个列的数据的数量: 统计结果集的行数: 用来获取满足条件的数据的数量.但是 ...

  5. mysql 固定符号分列显示_MySql中指定符号分割并分行展示

    1.涉及到的函数三个: 1.1 REPLACE('value','str1','str2') 用法规则:使用str2替换掉value中的所有的str1; SELECT REPLACE('我来了','来 ...

  6. mysql 获取每天的日期_mysql中获取一天、一周、一月时间数据的各种sql语句写法...

    今天抽时间整理了一篇mysql中与天.周.月有关的时间数据的sql语句的各种写法,部分是收集资料,全部手工整理,自己学习的同时,分享给大家,并首先默认创建一个表.插入2条数据,便于部分数据的测试,其中 ...

  7. mysql取前一个月时间戳_mysql中获取一天、一周、一月时间数据的各种sql语句写...

    创建表: 代码如下: create table if not exists t ( id int, addTime datetime default '0000-00-00 00:00:00′ ) 添 ...

  8. mysql如何查看事务日记_MySQL中的几种日志了解

    前言 MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slo ...

  9. mysql重做日志恢复数据_MySQL中重做日志,回滚日志,以及二进制日志的简单总结...

    MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...

最新文章

  1. python 字符串按指定分隔符分割
  2. 助动词有哪些 do does did,本身不能单独做谓语需要与主要动词一起做谓语 情态动词must can need
  3. Yen 的k_shortest paths 算法的C++实现
  4. 哈希运算python实现_一致性哈希算法 python实现
  5. js粘贴板为什么获取不到图片信息_【第1829期】复制黏贴上传图片和跨浏览器自动化测试...
  6. 5G商用将满一年,6G研发开始了...
  7. 从淘宝CFO到接棒马云 张勇是如何在12年里成为阿里董事局主席的
  8. Spring学习总结(31)——Spring Bean 生命周期总结
  9. java clock计时_Java Clock类– java.time.Clock
  10. 阿里云云计算 20 在线实验--块存储的使用
  11. [BZOJ 3622]已经没有什么好害怕的了(Dp+容斥原理)
  12. 软件工程之软件概要设计
  13. yytextview 复制_Swift iOS : YYText显示微博@文字的方法
  14. 按英语体育计算机创建透视表,2016年职称计算机考试模拟练习题
  15. CRM如何管理企业销售流程
  16. 服务器如何从安全模式增加用户名,win10安全模式里怎么添加账户_win10 安全模式如何添加用户-win7之家...
  17. 关于Keil编译程序出现“File has been changed outside the editor,reload?”的解决方法
  18. 红灯三秒亮一次,绿灯一秒亮一次,黄灯2秒亮一次;如何让三个灯不断交替重复亮灯?
  19. jQuery 08-13
  20. 基于MQTT协议的WZ指令开发V3.0版本支持onenet

热门文章

  1. python tqdm记录dataframe使用iterrows或iteritems循环行或循环列时的进度
  2. python 使用pymysql执行sql语句,使用try防止出错
  3. django处理select下拉表单(从model到前端到post到form)
  4. 接待员如何向客人upsell_如何提升自我做好客户服务与管理?
  5. Linux内核分析(八) 设备驱动
  6. Java Calendar类知识点总结
  7. java int数组任何数之间间隔不能对于指定数,内付极速排序
  8. Jenkins系列之二——centos 6.9 + JenKins 安装
  9. mysql的介绍和安装
  10. uva10026-鞋匠的难题