Mysql Merge表的使用注意事項和優點介紹

2021-06-22 18:26:31 字數 2388 閱讀 6017

merge儲存引擎把一組myisam資料表當做乙個邏輯單元來對待,讓我們可以同時對他們進行查詢。構成乙個merge資料表結構的各成員myisam資料表必須具有完全一樣的結構。每乙個成員資料表的資料列必須按照同樣的順序定義同樣的名字和型別,索引也必須按照同樣的順序和同樣的方式定義。

假設你有幾個日誌資料表,他們內容分別是這幾年來每一年的日誌記錄項,他們的定義都是下面這樣,yy代表年份:

[sql]view plain

copy

create

table

log_yy  

(  dt  datetime not

null

,  info varchar

(100) 

notnull

,  index

(dt)  

) engine = myisam;  

假設日誌資料表的當前集合包括 log_2004、log_2005、log_2006、log_2007 ,而你可以建立乙個如下所示的merge資料表把他們歸攏為乙個邏輯單元:

[sql]view plain

copy

create

table

log_merge  

(  dt datetime not

null

,  info varchar

(100) 

notnull

,  index

(dt)  

) engine = merge union

= (log_2004, log_2005, log_2006, log_2007);  

engine選項的值必須是merge,union選項列出了將被收錄在這個merge資料表離得各有關資料表。

把這個merge建立出來後,就可以像對待任何其他資料表那樣查詢它,只是每一次查詢都將同時作用與構成它的每乙個成員資料表 。

下面這個查詢可以讓我們知道上述幾個日誌資料表的資料行的總數:

[sql]view plain

copy

select

count

(*) 

from

log_merge;  

下面這個查詢用來確定在這幾年裡每年各有多少日誌記錄項:

[sql]view plain

copy

select

year

(dt) 

asy, 

count

(*) 

asentries 

from

log_merge 

group

byy;  

除了便於同時引用多個資料表而無需發出多條查詢,merge資料表還提供了以下一些便利。

merge資料表也支援delete 和update操作。insert操作比較麻煩,因為mysql需要知道應該把新資料行插入到哪乙個成員表裡去。在merge資料表的定義裡可以包括乙個insert_method選項,這個選項的可取值是no、first、last,他們的含義依次是insert操作是被禁止的、新資料行將被插入到現在union選項裡列出的第乙個資料表或最後乙個資料表。比如說,以下定義將對log_merge資料表的insert操作被當作對log_2007資料表----它是union選項所列出的最後乙個資料表:

[sql]view plain

copy

create

table

log_merge  

(  dt datetime not

null

,  info varchar

(100) 

notnull

,  index

(dt)  

) engine = merge union

= (log_2004, log_2005, log_2006, log_2007)  

insert_method = last

;  

建立乙個新的成員資料表log_2009並讓他有同樣的表結構,然後修改log_merge資料表把log_2009包括進來:

[sql]view plain

copy

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

Mysql MERGE引擎分表

一.什麼是merge引擎 merge儲存引擎把一組myisam資料表當做乙個邏輯單元來對待,讓我們可以同時對他們進行查詢。二.應用場景 如果需要把日誌紀錄不停的錄入mysql資料庫,並且每天 每週或者每個月都建立乙個單一的表,而且要時常進行來自多個表的合計查詢,merge表這時會非常簡單有效。三.舉...

WindowsFormsHost的使用注意

一使用1引用 2xmlns wfi clr namespace system.windows.forms.integration assembly windowsformsintegration xmlns wf clr namespace system.windows.forms assembly...

Hystrix dashboard的使用注意事項

hystrix 服務監控面板如何與被監控服務對接起來 他其實是個三合一註解,包含了如下三個註解 放到啟動類中即可,注意 hystrix.stream 乙個字都不能錯 for dashboard bean public servletregistrationbean hystrixmetricsstr...