mysql表分区

范围分区:

CREATE TABLE BIGTABLE

(

ID INT,

SNPTIME DATETIME NOT NULL,

VALUE VARCHAR(20),

PRIMARY KEY (SNPTIME, ID)

) ENGINE=InnoDB

partition by range (TO_DAYS(SNPTIME))

(

PARTITION p1 VALUES LESS THAN (to_days('2009-1-31')),

PARTITION p2 VALUES LESS THAN (to_days('2009-2-28')),

PARTITION p3 VALUES LESS THAN (to_days('2008-3-31')),

PARTITION p4 VALUES LESS THAN (to_days('2008-4-30')),

PARTITION p5 VALUES LESS THAN (to_days('2008-5-31')),

PARTITION p6 VALUES LESS THAN (to_days('2008-6-30')),

PARTITION p7 VALUES LESS THAN (to_days('2008-7-31')),

PARTITION p8 VALUES LESS THAN (to_days('2008-8-31')),

PARTITION p9 VALUES LESS THAN (to_days('2008-9-30')),

PARTITION p10 VALUES LESS THAN (to_days('2008-10-31')),

PARTITION p11 VALUES LESS THAN (to_days('2008-11-30')),

PARTITION p12 VALUES LESS THAN (to_days('2008-12-31')),

PARTITION p13VALUES LESS THAN MAXVALUE

) ;

注意一点:一定要有主键,并且主键要包括分区键。

但是,如果必须要分区,而分区中的分区键不想使用(业务不允许)主键的时候,可以采用两步走的办法。

1、建立表,带有主键。

2、删除主键,建立独立索引。

这样在插入数据的时候还是能够按部就班地进入各自所属的分区表。


给已存在的表加分区

ALTER TABLE SNP_SWITCH

partition by RANGE (TO_DAYS(RPTTIME))

(PARTITION P1210 VALUES LESS THAN (735172) ENGINE = MYISAM,

PARTITION P1211 VALUES LESS THAN (735202) ENGINE = MYISAM,

PARTITION P1212 VALUES LESS THAN (735233) ENGINE = MYISAM,

PARTITION P1301 VALUES LESS THAN (735264) ENGINE = MYISAM,

PARTITION P1302 VALUES LESS THAN (735292) ENGINE = MYISAM,

PARTITION P1303 VALUES LESS THAN (735323) ENGINE = MYISAM,

PARTITION P1304 VALUES LESS THAN (735353) ENGINE = MYISAM,

PARTITION P1305 VALUES LESS THAN (735384) ENGINE = MYISAM,

PARTITION P1306 VALUES LESS THAN (735414) ENGINE = MYISAM,

PARTITION P1307 VALUES LESS THAN (735445) ENGINE = MYISAM,

PARTITION P1308 VALUES LESS THAN (735476) ENGINE = MYISAM,

PARTITION P1309 VALUES LESS THAN (735506) ENGINE = MYISAM,

PARTITION P1310 VALUES LESS THAN (735537) ENGINE = MYISAM,

PARTITION P1311 VALUES LESS THAN (735567) ENGINE = MYISAM,

PARTITION P1312 VALUES LESS THAN (735598) ENGINE = MYISAM,

PARTITION P1401 VALUES LESS THAN (735629) ENGINE = MYISAM,

PARTITION P1402 VALUES LESS THAN (735657) ENGINE = MYISAM,

PARTITION P1403 VALUES LESS THAN (735688) ENGINE = MYISAM,

PARTITION P1404 VALUES LESS THAN (735718) ENGINE = MYISAM,

PARTITION P1405 VALUES LESS THAN (735749) ENGINE = MYISAM,

PARTITION P1406 VALUES LESS THAN (735779) ENGINE = MYISAM,

PARTITION P1407 VALUES LESS THAN (735810) ENGINE = MYISAM,

PARTITION P1408 VALUES LESS THAN (735841) ENGINE = MYISAM,

PARTITION P1409 VALUES LESS THAN (735871) ENGINE = MYISAM,

PARTITION P1410 VALUES LESS THAN (735902) ENGINE = MYISAM,

PARTITION P1411 VALUES LESS THAN (735932) ENGINE = MYISAM,

PARTITION P1412 VALUES LESS THAN (735963) ENGINE = MYISAM,

PARTITION P1501 VALUES LESS THAN (735994) ENGINE = MYISAM,

PARTITION P1502 VALUES LESS THAN (736022) ENGINE = MYISAM,

PARTITION P1503 VALUES LESS THAN (736053) ENGINE = MYISAM,

PARTITION P1504 VALUES LESS THAN (736083) ENGINE = MYISAM,

PARTITION P1505 VALUES LESS THAN (736114) ENGINE = MYISAM,

PARTITION P1506 VALUES LESS THAN (736144) ENGINE = MYISAM,

PARTITION P1507 VALUES LESS THAN (736175) ENGINE = MYISAM,

PARTITION P1508 VALUES LESS THAN (736206) ENGINE = MYISAM,

PARTITION P1509 VALUES LESS THAN (736236) ENGINE = MYISAM,

PARTITION P1510 VALUES LESS THAN (736267) ENGINE = MYISAM,

PARTITION P1511 VALUES LESS THAN (736297) ENGINE = MYISAM,

PARTITION P1512 VALUES LESS THAN (736328) ENGINE = MYISAM,

PARTITION P1600 VALUES LESS THAN (741807) ENGINE = MYISAM);


HASH分区:

create table k1(v1 int, v2 int, v3 int, d datetime) partition by hash (to_days(d)) partitions 3660;


你可能感兴趣的:(分区,mysql,partition)