国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

MySQL使用MRG_MyISAM(MERGE)實現分表后查詢的示例

瀏覽:4日期:2023-10-08 08:53:54

數據庫大數據量優化是一門很大的學問,也是做為一名開發者需要掌握的專業技能。

MySQL分表方式分為垂直分表和水平分表,這兩種分表形式都比較簡單,簡單理解垂直分表指的是:表的記錄并不多,但是字段卻很長,表占用空間很大,檢索表的時候需要執行大量的IO,嚴重降低了性能。這時需要把大的字段拆分到另一個表,并且該表與原表是一對一的關系。而水平分表則是在同一個數據庫內,把同一個表的數據按一定規則拆到多個表中,目的是優化單一表數據量過大而產生的性能問題,避免IO爭搶并減少鎖表的幾率。

實現分表很簡單,復雜的是分表之后如何查詢數據?今天的實現方式是使用Mysql表引擎MRG_MyISAM(MERGE)MERGE存儲引擎,也被認識為MRG_MyISAM引擎,是一個相同的可以被當作一個來用的MyISAM表的集合?!跋嗤币馕吨斜硗瑯拥牧泻退饕畔?。你不能合并列被以不同順序列于其中的表,沒有恰好同樣列的表,或有不同順序索引的表。而且,任何或者所有的表可以用myisampack來壓縮。表選項的差異,比如AVG_ROW_LENGTH, MAX_ROWS或PACK_KEYS都不重要。

當你創建一個MERGE表之時,MySQL在磁盤上創建兩個文件。文件名以表的名字開始,并且有一個擴展名來指明文件類型。一個.frm文件存儲表定義,一個.MRG文件包含被當作一個來用的表的名字。這些表作為MERGE表自身,不必要在同一個數據庫中。

你可以對表的集合用SELECT, DELETE, UPDATE和INSERT。你必須對你映射到一個MERGE表的這些表有SELECT, UPDATE和DELETE 的權限。

如果你DROP MERGE表,你僅在移除MERGE規格。底層表沒有受影響。

當你創建一個MERGE表之時,你必須指定一個UNION=(list-of-tables)子句,它說明你要把哪些表當作一個來用。如果你想要對MERGE表的插入發生在UNION列表中的第一個或最后一個表上,你可以選擇地指定一個INSERT_METHOD選項。使用FIRST或LAST值使得插入被相應地做在第一或最后一個表上。如果你沒有指定INSERT_METHOD選項,或你用一個NO值指定該選項。往MERGE表插入記錄的試圖導致錯誤。

舉個例子:創建兩個子分表:

CREATE TABLE `yzm_table1` ( `id` int(10) unsigned NOT NULL, `title` varchar(100) NOT NULL DEFAULT ’’, `content` varchar(255) NOT NULL DEFAULT ’’, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;CREATE TABLE `yzm_table2` ( `id` int(10) unsigned NOT NULL, `title` varchar(100) NOT NULL DEFAULT ’’, `content` varchar(255) NOT NULL DEFAULT ’’, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

表創建完畢了,需要注意的是這里的id不能設為自增,而且所有的表結構必須一致,包括結構,類型,長度,字段的順序都必須一致那么對于這個id如何取得呢?后面我會詳細說明?,F在,我們需要一個合并表,用于查詢,創建合并表的代碼如下:

CREATE TABLE `yzm_table` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL DEFAULT ’’, `content` varchar(255) NOT NULL DEFAULT ’’, PRIMARY KEY (`id`)) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=NO INSERT_METHOD=LAST UNION=(`yzm_table1`,`yzm_table2`);

合并表也必須和前面的表有相同的結構,類型,長度,包括字段的順序都必須一致這里的 INSERT_METHOD=NO 表示不允許對本表進行insert操作。好了,當需要查詢的時候,我們可以只對yzm_table這個表進行操作就可以了,也就是說這個表僅僅只能進行select操作。

插入一些數據測試:

INSERT INTO `yzm_table1` VALUES (’1’, ’table1-1’, ’content1-1’);INSERT INTO `yzm_table1` VALUES (’2’, ’table1-2’, ’content1-2’);INSERT INTO `yzm_table2` VALUES (’3’, ’table2-1’, ’content2-1’);INSERT INTO `yzm_table2` VALUES (’4’, ’table2-2’, ’content2-2’);INSERT INTO `yzm_table2` VALUES (’5’, ’table2-3’, ’content2-3’);

然后查詢合并表(主表)

SELECT * FROM `yzm_table` LIMIT 10;

果然可以查詢到所有關聯子表的所有數據,這樣就可以對所有的數據進行分頁、統計等查詢了。

以上就是MySQL使用MRG_MyISAM(MERGE)實現分表后查詢的示例的詳細內容,更多關于MySQL 分表后查詢的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 草草草在线观看 | 亚洲黄色三级网站 | 99久久国产免费福利 | 中国女人毛茸茸免费视频 | 日韩欧美一区二区中文字幕 | 精品久久久久久中文字幕网 | 欧美xo影院 | 自拍偷拍图区 | 亚洲va在线va天堂va四虎 | 乱子伦农村xxxx | 久久精品在 | 欧洲一级片 | 亚洲福利影视 | 国产的一级片 | 亚洲视频精选 | 国产精品久久久久久一级毛片 | 男人亚洲天堂 | 精品久久九九 | 成人看片黄a免费看视频 | 深爱五月开心网亚洲综合 | 日本免费一二区视频 | 久久国产欧美日韩精品免费 | 国产精品国产 | 俄罗斯特级毛片 | 精品91自产拍在线 | 高清在线亚洲精品国产二区 | 欧美影院网站视频观看 | 亚洲精品久久久午夜伊人 | 在线91精品亚洲网站精品成人 | 好看的亚洲视频 | 怡红院免费播放全部视频 | 波多野结衣一区二区三区在线观看 | 黄色视品 | 性欧美巨大的视频 | 美国毛片aa| 国产成人亚洲合集青青草原精品 | 精品视频在线观看 | 国产一级视频在线观看 | 99久久99热久久精品免费看 | 久久狠狠躁免费观看2020 | 国产女厕偷窥系列在线视频 |