国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL使用MRG_MyISAM(MERGE)實現分表后查詢的示例

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

2021-03-16 18:20袁志蒙 Mysql

這篇文章主要介紹了MySQL使用MRG_MyISAM(MERGE)實現分表后查詢的示例,幫助大家更好的理解和使用MySQL數據庫,感興趣的朋友可以了解下

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

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表插入記錄的試圖導致錯誤。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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如何取得呢?后面我會詳細說明。現在,我們需要一個合并表,用于查詢,創建合并表的代碼如下:

?
1
2
3
4
5
6
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操作。

插入一些數據測試:

?
1
2
3
4
5
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');

然后查詢合并表(主表)

?
1
SELECT FROM `yzm_table` LIMIT 10;

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

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

原文鏈接:https://blog.yzmcms.com/mysql/208.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久国产一区二区 | 韩日免费视频 | 亚洲欧洲精品一区二区 | 日韩中文字幕一区二区 | 日韩一区久久 | 国产在线在线 | 久久久www免费人成精品 | 精品一二三区在线观看 | 欧美日韩中文 | 一呦二呦三呦国产精品 | 欧美a在线| 欧美性大战久久久 | 三级黄色在线视频 | 成人免费观看视频大全 | 国产成人综合av | 国产精品亲子伦av一区二区三区 | 综合精品久久久 | 天天综合久久 | 中文字幕超清在线免费 | 亚洲在线一区 | 国产欧美日韩 | 日本免费一区二区在线 | 一区二区视频在线观看 | 一区二区三区精品视频免费看 | jizzjizzjizz亚洲女| 国产日韩精品视频 | 国产精品伦理一区二区 | 亚洲精品乱码久久久久久蜜糖图片 | 亚洲成人av片 | 国产成人免费视频网站视频社区 | 久草视频在线播放 | 精品av | 精品成人一区二区 | 日韩一区在线观看视频 | 国产91精品在线 | 日本a v在线播放 | 亚洲精品成人 | 午夜视频网 | 中文字字幕一区二区三区四区五区 | 日韩欧美在线一区 | 久久精品中文视频 |