09-子分区
子分区(subpartitioning)是分区表中对每个分区的再次分割,又被称为复合分区(composite partitioning)。MySQL从MySQL 5.1开始支持对已经通过RANGE或者LIST分区了的表再进行子分区,子分区既可以使用HASH分区,也可以使用KEY分区。例如:
mysql> CREATE TABLE ts (id INT, purchased DATE)
-> PARTITION BY RANGE(YEAR(purchased))
-> SUBPARTITION BY HASH(TO_DAYS(purchased))
-> SUBPARTITIONS 2
-> (
-> PARTITION p0 VALUES LESS THAN (1990),
-> PARTITION p1 VALUES LESS THAN (2000),
-> PARTITION p2 VALUES LESS THAN MAXVALUE
-> );
Query OK, 0 rows affected (0.11 sec)
表ts有3个RANGE分区,这3个分区中的每个分区(p0、p1、p2)又被进一步分成2个子分区,实际上,整个表被分成了 3×2 = 6个分区,由于PARTITION BY RANGE子句的作用,第一和第二个分区只保存purchased 列中值小于1990的记录。
复合分区适用于保存非常大量的数据记录。