mysql表分區主要分為RANGE分區,LIST分區,HASH分區,LINEAR HASH分區,KEY分區
目前,我所使用的是RANGE分區,其中主要注意兩點:
1.分區所用的字段必須是主鍵,并且,如果有設置唯一鍵,該字段也需要添加到唯一鍵中,否則會報錯。
創建表時,建立分區的sql如下所示:
CREATETABLE`T_part` (
? ? ? `f_id`INTDEFAULTNULL,
? ? ? `f_name`VARCHAR(20)DEFAULTNULL,
? ? ? ?PRIMARYKEY(`f_id`)
) ENGINE=myisamDEFAULTCHARSET=utf8
PARTITIONBYRANGE (f_id)(-----指定分區方式
? ? ? PARTITION p0VALUESless THAN (10),--分了兩個區
? ? ? PARTITION p1VALUESless THAN (20)
);
修改表,建立分區時sql如下所示:
ALTER TABLE wms_pac_package_detail PARTITION BY RANGE(TO_DAYS(`created_at`))
(
? ? ?PARTITION p0 VALUES LESS THAN (TO_DAYS('2017-04-01')) ENGINE = INNODB,
? ? ?PARTITION p1 VALUES LESS THAN (TO_DAYS('2017-05-01')) ENGINE = INNODB,
? ? ?PARTITION p2 VALUES LESS THAN (TO_DAYS('2017-06-01')) ENGINE = INNODB,
? ? ?PARTITION p3 VALUES LESS THAN (TO_DAYS('2017-07-01')) ENGINE = INNODB,
? ? ?PARTITION p4 VALUES LESS THAN (TO_DAYS('2017-08-01')) ENGINE = INNODB,
? ? ?PARTITION p5 VALUES LESS THAN (TO_DAYS('2017-09-01')) ENGINE = INNODB,
? ? ?PARTITION p6 VALUES LESS THAN (TO_DAYS('2017-10-01')) ENGINE = INNODB,
? ? ?PARTITION p7 VALUES LESS THAN (TO_DAYS('2017-11-01')) ENGINE = INNODB,
? ? ?PARTITION p8 VALUES LESS THAN (TO_DAYS('2017-12-01')) ENGINE = INNODB,
? ? ?PARTITION p9 VALUES LESS THAN (TO_DAYS('2018-01-01')) ENGINE = INNODB,
? ? ?PARTITION p10 VALUES LESS THAN MAXVALUE ENGINE = INNODB
);