范围分区。 这种类型的分区根据列值在给定范围内将行分配给分区。请参见 第23.2.1节“ RANGE分区”。有关对此类型的扩展的信息RANGE COLUMNS,请参见第23.2.3.1节“ RANGE COLUMNS分区”。
列表分区。 类似于通过进行分区RANGE,不同之处在于,根据匹配一组离散值之一的列选择分区。请参见 第23.2.2节“列表分区”。有关对此类型的扩展的信息LIST COLUMNS,请参见第23.2.3.2节“ LIST COLUMNS分区”。
HASH分区。 对于这种类型的分区,将根据用户定义的表达式返回的值来选择一个分区,该表达式将对要插入表中的行中的列值进行操作。该函数可以包含在MySQL中有效的任何产生非负整数值的表达式。LINEAR HASH也可以扩展此类型。请参见第23.2.4节“ HASH分区”。
密钥分区。 这种类型的分区类似于通过进行分区 HASH,不同之处在于仅提供了一个或多个要评估的列,并且MySQL服务器提供了自己的哈希函数。这些列可以包含非整数值,因为MySQL提供的哈希函数可以保证整数结果,而与列数据类型无关。LINEAR KEY也可以扩展此类型 。请参见 第23.2.5节“密钥分区”。
数据库分区的一种非常常见的用法是按日期隔离数据。某些数据库系统支持显式日期分区,而MySQL在8.0中未实现。但是,不能在MySQL中很难创建基于分区方案 DATE, TIME或 DATETIME列,或基于表达式利用这样的列。
当通过划分KEY或LINEAR KEY,可以使用一个DATE, TIME或 DATETIME列作为分区列不进行列值的任何修饰。例如,此表创建语句在MySQL中完全有效:
CREATE TABLE members (
firstname VARCHAR(25) NOT NU