MYSQL分区使用没有oracle这么强大,注意点有: 1.一般使用RANGE方式分区,HASH,LIST分区基本不考虑; 2.RANGE分区只能使用在date 或 datetime的列上; 3.分区列必须和主键组成复合主键; 一:创建分区表: CREATE TABLE `fms_t_fl_info` ( `ID` int(32) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `SOBT` datetime NOT NULL COMMENT '(STOD)计起时间', PRIMARY KEY (`ID`, `SOBT`) ) PARTITION BY RANGE (TO_DAYS(`SOBT`)) ( partition p0 values less than (TO_DAYS('20150602')), partition p1 values less than (TO_DAYS('20150603')), PARTITION p3 VALUES LESS THAN MAXVALUE ); 二: 追加分区表: ALTER TABLE `fms_t_fl_info` ADD PARTITION (PARTITION p4 VALUES LESS THAN (TO_DAYS('20150604')); 三:删除分区: ALERT TABLE users DROP PARTITION p3; 注:对于追加新的分区时,我们最好使用以下步骤:把p3分区的数据导出,删除p3分区,然后在追加新的分区,这样可以使oracle中索引不失效,mysql中我没有查到有local index的说法,估计只有一种全局索引可用; 四:几种获取MySQL分区表信息的常用方法 SHOW CREATE TABLE 可以查看创建分区表的CREATE语句 SHOW TABLE STATUS eg: SHOW TABLE STATUS where name='fms_t_fl_info'; 可以查看表是否为分区表 查看INFORMATION_SCHEMA.PARTITIONS表 可以查看表具有哪几个分区、分区的方法、分区中数据的记录数等重要信息 EXPLAIN PARTITIONS SELECT eg:explain partitions select * from fms_t_fl_info where sobt=STR_TO_DATE('20150602120000','%Y%m%d%H%i%s'); 查看select语句怎样使用分区