程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQLMerge存儲引擎

MySQLMerge存儲引擎

編輯:MySQL綜合教程

MySQLMerge存儲引擎。本站提示廣大學習愛好者:(MySQLMerge存儲引擎)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQLMerge存儲引擎正文


MERGE存儲引擎把一組MyISAM數據表當作一個邏輯單位來看待,讓我們可以同時對他們停止查詢。組成一個MERGE數據表構造的各成員MyISAM數據表必需具有完整一樣的構造。每個成員數據表的數據列必需依照異樣的次序界說異樣的名字和類型,索引也必需依照異樣的次序和異樣的方法界說。

Merge存儲引擎許可將一組應用MyISAM存儲引擎的而且表構造雷同(即每張表的字段次序、字段稱號、字段類型、索引界說的次序及其界說的方法必需雷同)的數據表歸並為一個表,便利了數據的查詢。

假定有log_2004、log_2005、log_2006、log_2007 這四張日記記載表,其數據分離是每年的數據,表構造以下(YY代表年份):

CREATE TABLE log_YY ( 
dt DATETIME NOT NULL, 
info VARCHAR(100) NOT NULL, 
INDEX (dt) 
) ENGINE = MyISAM;

可以經由過程以下SQL語句把這些表歸攏為一個邏輯單位:

CREATE TABLE log_merge( 
dt DATETIME NOT NULL, 
info VARCHAR(100) NOT NULL, 
INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007);

解釋:ENGINE選項的值必需是MERGE;UNION選項列出了將被收錄在這個log_merge數據表的一切表。該log_merge表創立勝利後,便可以像通俗表那樣查詢它,只是每次查詢都將同時感化於組成它的每個成員數據表 。比方查詢這些日記數據表的數據行總數:

SELECT COUNT(*) FROM log_merge;

比方查詢每一年各有若干日記記載:

SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y;

創立MERGE存儲引擎的表也支撐DELETE 和UPDATE操作。INSERT操作比擬費事,由於MySQL須要曉得應當把新數據行拔出到哪個成員內外去。在MERGE存儲引擎數據表的界說裡可以包含一個INSERT_METHOD選項(MySQL4.0以後支撐),這個選項的值有NO、FIRST、LAST三個,其寄義順次是制止INSERT操作、將數據行拔出到UNION中的第一個表或將數據行拔出到UNION中的最初一個表。好比上面SQL語句指定將新數據添加到log_2007數據表----它是UNION選項所列出的最初一個數據表:

CREATE TABLE log_merge( 
dt DATETIME NOT NULL, 
info VARCHAR(100) NOT NULL, 
INDEX(dt) 
) ENGINE = MERGE UNION = (log_2004, log_2005, log_2006, log_2007) 
INSERT_METHOD = LAST;

創立一個新的成員數據表log_2009並讓它有異樣的表構造,然後修正log_merge數據表把log_2009包含出去:

CREATE TABLE log_2009 LIKE log_2008; 
ALTER TABLE log_merge 
UNION = (log_2004, log_2005, log_2006, log_2007,log_2008,log_2009);

留意:應用Merge“歸並”起來的表構造雷同的表最好不要有主鍵,不然會湧現這類情形:一共有兩個成員表,其主鍵在兩個表中存在雷同情形,然則寫了一條按雷同主鍵值查詢的SQL語句,這時候只能查到UNION列表中第一個表中的數據。

有關MySQLMerge存儲引擎小編就給年夜家引見這麼多,願望對年夜家有所贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved