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,www.cppcns.com
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儲存引擎資料表的定義裡可以包括乙個inserwww.cppcns.comt_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包括進來:
crwww.cppcns.comeate 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儲存引擎
本文位址: /shujuku/mysql/145483.html
MySQL Merge儲存引擎
merge儲存引擎同意將一組使用myisam儲存引擎的而且表結構同樣 即每張表的字段順序 欄位名稱 字段型別 索引定義的順序及其定義的方式必須同樣 的資料表合併為乙個表,方便了資料的查詢。如果有log 2004 log 2005 log 2006 log 2007 這四張日誌記錄表,其資料各自是每一...
MySQL MERGE儲存引擎 簡介
merge儲存引擎把一組myisam資料表當做乙個邏輯單元來對待,讓我們可以同時對他們進行查詢。構成乙個merge資料表結構的各成員myisam資料表必須具有完全一樣的結構。每乙個成員資料表的資料列必須按照同樣的順序定義同樣的名字和型別,索引也必須按照同樣的順序和同樣的方式定義。假設你有幾個日誌資料...
MySQL MERGE儲存引擎 簡介
merge儲存引擎把一組myisam資料表當做乙個邏輯單元來對待,讓我們可以同時對他們進行查詢。構成乙個merge資料表結構的各成員myisam資料表必須具有完全一樣的結構。每乙個成員資料表的資料列必須按照同樣的順序定義同樣的名字和型別,索引也必須按照同樣的順序和同樣的方式定義。假設你有幾個日誌資料...