1 根据id范围进行分区

CREATE TABLE `person1` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10611038 DEFAULT CHARSET=utf8

PARTITION BY RANGE(id)(
    PARTITION p0 VAlUES LESS THAN(100),
    PARTITION p1 VALUES LESS THAN(200),
    PARTITION p2 VALUES LESS THAN(300),
    PARTITION p3 VALUES LESS THAN(400),
    PARTITION p4 values less than maxvalue

);

 

2 根据时间进行分区

 CREATE TABLE part_date
          (  c1 int default NULL,
      c2 varchar(30) default NULL,
      c3 date default NULL) engine=myisam
     partition by range (to_days(c3))
     (PARTITION p0 VALUES LESS THAN (to_days('2022-03-01')),
     PARTITION p1 VALUES LESS THAN (to_days('2022-04-01')) ,
     PARTITION p11 VALUES LESS THAN MAXVALUE );

注意:必须要用日期转换函数,否则失效

 

3 查看分区个数,以及分区的行数

select partition_name, PARTITION_DESCRIPTION, PARTITION_EXPRESSION, table_rows from information_schema.partitions where table_name = '表名'