欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為瑤海等服務(wù)建站,瑤海等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為瑤海企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

以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)閔ash分區(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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁(yè)名稱(chēng):MySQL普通表如何轉(zhuǎn)換成分區(qū)表
本文地址:http://chinadenli.net/article20/giojco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航靜態(tài)網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作