久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL普通表如何轉(zhuǎn)換成分區(qū)表

共計(jì) 4602 個(gè)字符,預(yù)計(jì)需要花費(fèi) 12 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 MySQL 普通表如何轉(zhuǎn)換成分區(qū)表,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

以 jxfp_data_bak 表為例:
mysql desc jxfp_data_bak;
+————-+————–+——+—–+———+—————-+
| Field       | Type         | Null | Key | Default | Extra          |
+————-+————–+——+—–+———+—————-+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| SH          | varchar(32)  | YES  |     | NULL    |                |
| KPJH        | varchar(32)  | YES  |     | NULL    |                |
| ZFJH        | varchar(10)  | YES  |     | NULL    |                |
| TYPE        | char(3)      | YES  |     | NULL    |                |
| MONTH       | char(10)     | YES  |     | NULL    |                |
| STATUS      | varchar(255) | YES  | MUL | NULL    |                |
| CREATE_TIME | datetime     | YES  |     | NULL    |                |
| UPDATE_TIME | datetime     | YES  |     | NULL    |                |
| FP_DATA     | mediumtext   | YES  |     | NULL    |                |
+————-+————–+——+—–+———+—————-+
10 rows in set (0.00 sec)

方法 1: 用 alter table table_name partition by 命令重建分區(qū)表

mysql alter table jxfp_data_bak PARTITION BY KEY(SH) PARTITIONS 8;
ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table s partitioning function

直接增加主鍵會(huì)報(bào)錯(cuò):
mysql alter table jxfp_data_bak add PRIMARY KEY(SH);
ERROR 1068 (42000): Multiple primary key defined

需要?jiǎng)h除原先的主鍵,并增加聯(lián)合主鍵:
mysql ALTER TABLE `jxfp_data_bak` DROP PRIMARY KEY, ADD PRIMARY KEY(`id`,`SH`);

查看新的表結(jié)構(gòu):
mysql desc jxfp_data_bak;
+————-+————–+——+—–+———+—————-+
| Field       | Type         | Null | Key | Default | Extra          |
+————-+————–+——+—–+———+—————-+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| SH          | varchar(32)  | NO   | PRI |         |                |   –SH 列為聯(lián)合主鍵
| KPJH        | varchar(32)  | YES  |     | NULL    |                |
| ZFJH        | varchar(10)  | YES  |     | NULL    |                |
| TYPE        | char(3)      | YES  |     | NULL    |                |
| MONTH       | char(10)     | YES  |     | NULL    |                |
| STATUS      | varchar(255) | YES  |     | NULL    |                |
| CREATE_TIME | datetime     | YES  |     | NULL    |                |
| UPDATE_TIME | datetime     | YES  |     | NULL    |                |
| FP_DATA     | mediumtext   | YES  |     | NULL    |                |
+————-+————–+——+—–+———+—————-+
10 rows in set (0.00 sec)

用 alter table table_name partition by 命令重建分區(qū)表:
建 hash 分區(qū)會(huì)報(bào)錯(cuò), 因?yàn)?hash 分區(qū)字段只能是整型,不能是 varchar 型:
mysql alter table jxfp_data_bak PARTITION BY HASH(SH) PARTITIONS 8;
ERROR 1659 (HY000): Field SH is of a not allowed type for this type of partitioning

但建 key 分區(qū)則可以成功:
mysql alter table jxfp_data_bak PARTITION BY KEY(SH) PARTITIONS 8;
Query OK, 78317 rows affected (3.42 sec)
Records: 78317  Duplicates: 0  Warnings: 0

測(cè)試分區(qū)功能:
mysql explain partitions select * from jxfp_data_bak;
+—-+————-+—————+————————-+——+—————+——+———+——+——-+——-+
| id | select_type | table         | partitions              | type | possible_keys | key  | key_len | ref  | rows  | Extra |
+—-+————-+—————+————————-+——+—————+——+———+——+——-+——-+
|  1 | SIMPLE      | jxfp_data_bak | p0,p1,p2,p3,p4,p5,p6,p7 | ALL  | NULL          | NULL | NULL    | NULL | 43588 | NULL  |
+—-+————-+—————+————————-+——+—————+——+———+——+——-+——-+
1 row in set (0.00 sec)

以上我們可以看到全表掃描跨越了七個(gè)分區(qū) (p0–p7), 說(shuō)明分區(qū)表功能生效。

方法 2: 利用 create table 命令重建分區(qū)表

mysql CREATE TABLE `jxfp_data` (
    –   `id` bigint(20) NOT NULL AUTO_INCREMENT,
    –   `SH` varchar(32) DEFAULT NULL COMMENT 稅號(hào) ,
    –   `KPJH` varchar(32) DEFAULT NULL COMMENT 開(kāi)票機(jī)號(hào) ,
    –   `ZFJH` varchar(10) DEFAULT NULL COMMENT 主分機(jī)號(hào) ,
    –   `TYPE` char(3) DEFAULT NULL,
    –   `MONTH` char(10) DEFAULT NULL,
    –   `STATUS` varchar(255) DEFAULT NULL COMMENT 解析狀態(tài)標(biāo)識(shí) ,
    –   `CREATE_TIME` datetime DEFAULT NULL COMMENT 插入時(shí)間 ,
    –   `UPDATE_TIME` datetime DEFAULT NULL COMMENT 更新時(shí)間 ,
    –   `FP_DATA` mediumtext COMMENT 發(fā)票數(shù)據(jù) ,
    –   PRIMARY KEY (`id`,`SH`)
    – ) ENGINE=InnoDB AUTO_INCREMENT=81060 DEFAULT CHARSET=utf8 PARTITION BY LINEAR KEY (SH) PARTITIONS 8;
Query OK, 0 rows affected (0.08 sec)        – 創(chuàng)建分區(qū)表成功

注意: 如果原表里有主鍵字段,則 MYSQL 的分區(qū)字段必須包含在主鍵字段內(nèi),否則會(huì)創(chuàng)建失敗,因此上面需要定義兩個(gè)聯(lián)合主鍵 (`id`,`SH`)

插回?cái)?shù)據(jù):
mysql insert into jxfp_data select * from ixinnuo_sjcj.jxfp_data;
Query OK, 745540 rows affected, 1 warning (28.21 sec)
Records: 745540  Duplicates: 0  Warnings: 1

測(cè)試:
mysql explain partitions select * from jxfp_data;
+—-+————-+———–+————————-+——+—————+——+———+——+——–+——-+
| id | select_type | table     | partitions              | type | possible_keys | key  | key_len | ref  | rows   | Extra |
+—-+————-+———–+————————-+——+—————+——+———+——+——–+——-+
|  1 | SIMPLE      | jxfp_data | p0,p1,p2,p3,p4,p5,p6,p7 | ALL  | NULL          | NULL | NULL    | NULL | 695986 | NULL  |
+—-+————-+———–+————————-+——+—————+——+———+——+——–+——-+
1 row in set (0.00 sec)

以上是“MySQL 普通表如何轉(zhuǎn)換成分區(qū)表”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-26發(fā)表,共計(jì)4602字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 渝中区| 棋牌| 邹城市| 蒙山县| 尚义县| 谷城县| 电白县| 利津县| 鹤峰县| 宝山区| 富蕴县| 洛隆县| 濮阳县| 四平市| 茂名市| 新民市| 双牌县| 阿拉善左旗| 衡东县| 库车县| 许昌县| 洪雅县| 视频| 长垣县| 洛扎县| 渭南市| 五原县| 新兴县| 三穗县| 唐海县| 报价| 阿勒泰市| 峨边| 呈贡县| 柳江县| 奈曼旗| 陇南市| 三亚市| 顺义区| 开封市| 罗江县|