《Mysql學習MySQLMerge存儲引擎》要點:
本文介紹了Mysql學習MySQLMerge存儲引擎,希望對您有用。如果有疑問,可以聯系我們。
MYSQL實例MERGE存儲引擎把一組MyISAM數據表當做一個邏輯單元來對待,讓我們可以同時對他們進行查詢.構成一個MERGE數據表結構的各成員MyISAM數據表必須具有完全一樣的結構.每一個成員數據表的數據列必須依照同樣的順序定義同樣的名字和類型,索引也必須依照同樣的順序和同樣的方式定義.
MYSQL實例Merge存儲引擎允許將一組使用MyISAM存儲引擎的并且表結構相同(即每張表的字段順序、字段名稱、字段類型、索引定義的順序及其定義的方式必須相同)的數據表合并為一個表,方便了數據的查詢.
MYSQL實例假設有log_2004、log_2005、log_2006、log_2007 這四張日志記錄表,其數據分別是每一年的數據,表結構如下(YY代表年份):
MYSQL實例
CREATE TABLE log_YY (
dt DATETIME NOT NULL,
info VARCHAR(100) NOT NULL,
INDEX (dt)
) ENGINE = MyISAM;
MYSQL實例可以通過如下SQL語句把這些表歸攏為一個邏輯單元:
MYSQL實例
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);
MYSQL實例說明:ENGINE選項的值必須是MERGE;UNION選項列出了將被收錄在這個log_merge數據表的所有表.該log_merge表創建成功后,就可以像普通表那樣查詢它,只是每一次查詢都將同時作用于構成它的每一個成員數據表 .譬如查詢這些日志數據表的數據行總數:
MYSQL實例
SELECT COUNT(*) FROM log_merge;
MYSQL實例譬如查詢每年各有多少日志記錄:
MYSQL實例
SELECT YEAR(dt) AS y, COUNT(*) AS entries FROM log_merge GROUP BY y;
MYSQL實例創建MERGE存儲引擎的表也支持DELETE 和UPDATE操作.INSERT操作比較麻煩,因為MySQL需要知道應該把新數據行插入到哪一個成員表里去.在MERGE存儲引擎數據表的定義里可以包括一個INSERT_METHOD選項(MySQL4.0之后支持),這個選項的值有NO、FIRST、LAST三個,其含義依次是禁止INSERT操作、將數據行插入到UNION中的第一個表或將數據行插入到UNION中的最后一個表.比如下面SQL語句指定將新數據添加到log_2007數據表----它是UNION選項所列出的最后一個數據表:
MYSQL實例
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;
MYSQL實例創建一個新的成員數據表log_2009并讓它有同樣的表結構,然后修改log_merge數據表把log_2009包括進來:
MYSQL實例
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“合并”起來的表結構相同的表最好不要有主鍵,否則會出現這種情況:一共有兩個成員表,其主鍵在兩個表中存在相同情況,但是寫了一條按相同主鍵值查詢的SQL語句,這時只能查到UNION列表中第一個表中的數據.
MYSQL實例有關MySQLMerge存儲引擎小編就給大家介紹這么多,希望對大家有所贊助!
維易PHP培訓學院每天發布《Mysql學習MySQLMerge存儲引擎》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。