MySQL分区(三)COLUMNS分区

LIST和RANGE分区只支持整数分区,从而需要额外的函数计算来得到整数或者通过额外的转换表来转换为整数再分区。

COLUMNS分区可以细分为:RANGE COLUMNS分区和 LIST COLUMNS分区,都支持整数、日期时间、字符串数据类型。

CREATE TABLE rc3(a INT,b INT)

PARTITION BY RANGE COLUMNS(a,b)(

    PARTITION p01 VALUES LESS THAN (0,10),

    PARTITION p02 VALUES LESS THAN (10,10),

    PARTITION p03 VALUES LESS THAN (10,20),

    PARTITION p04 VALUES LESS THAN (10,35),

    PARTITION p05 VALUES LESS THAN (10,MAXVALUE),

    PARTITION p06 VALUES LESS THAN (MAXVALUE,MAXVALUE)

    );

insert into rc3 (a,b) values (1,10);

select (1,10) < (10,10) from dual;

SELECT partition_name part,    
    partition_expression expr,
    partition_description descr,
    table_rows
FROM
    information_schema.`PARTITIONS`
WHERE
    table_schema=SCHEMA()
    AND table_name='rc3'

可以看到 a=1,b=10 的记录,写入了p02区。

再插入几条数据:

insert into rc3(a,b) values(10,9),(10,10),(10,99)

a=10,b=20 写入了 p03区

可见规则为:先根据 a 字段排序再根据 b 字段排序

a < 10 or ((a=10)and(b<10))

原文地址:https://www.cnblogs.com/kate7/p/13384260.html