構文
データは、範囲境界によって分割される。 時間境界が一般的に使用される。 パーティションの境界は増分である必要があります。 最大範囲の境界としてMAXVALUEを指定できます。
テーブルを作成...
PARTITION BY RANGE(partition_expr) [PARTITIONS number]
(
PARTITION part_name未満の値 (range_bound_value) 、
PARTITION part_name未満の値 (range_bound_value) 、
...
)
partition_expr:
partition_column
| partition_func(partition_column)
# パーティション関数を定義します。
partition_func:
| TO_DAYS
| TO_MONTHS
| TO_WEEKS
| TO_SECOND
| UNIX_TIMESTAMP
| 月
| DAYOFWEEK
| DAYOFMONTH
| DAYOFYEAR
| SUBSTR
| SUBSTRING
| 右
| 左
RANGEパーティショニングとRANGE COLUMNSパーティショニングの違いの詳細については、「概要」トピックの「RANGEパーティショニングとRANGE COLUMNSパーティショニングの比較」をご参照ください。
使用上の注意
RANGEパーティショニングでは、単一列のパーティションキーにパーティション関数を使用できます。 ただし、パーティションキー列のサポートされるデータ型は、パーティション関数によって異なります。
RANGEパーティショニングでは、ベクトルパーティションキーにパーティション関数を使用することはできません。
パーティションキー列にはネストされたパーティション分割関数を使用できません。
各パーティションの名前は一意である必要があり、デフォルトでは最大16文字の長さにすることができます。
TIMESTAMPなどのタイムゾーンに依存するデータ型の列をパーティションキー列として使用する場合は、パーティションキー列にUNIX_TIMESTAMPパーティション分割関数を使用する必要があります。
既定では、パーティション分割テーブルには最大8,192個のパーティションを含めることができます。
デフォルトでは、パーティションキーは最大5つのパーティションキー列で構成できます。
例
パーティション分割関数の使用
DATETIME型の誕生日列を単一列パーティションキーとして指定し、TO_DAYSパーティショニング関数を使用して誕生日列の値を日数に変換し、RANGEパーティショニングを実行します。
テーブルの作成tb_r_fn (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
レンジによるパーティー (TO_DAYS(birthday))
(
PARTITION p1未満の値 (TO_DAYS('2020-01-01 ')) 、
PARTITION p2はより少ない値 (TO_DAYS('2021-01-01 ')) 、
PARTITION p3はより少ない値 (TO_DAYS('2022-01-01 ')) 、
PARTITION pm値より少ない (最大値)
)
その他のパーティション分割関数の使用方法の詳細については、「パーティション分割関数」をご参照ください。
パーティション分割関数を使用せずにパーティション分割を実行する
RANGEパーティション分割の単一列パーティションキーとしてid列を指定し、パーティション数を8に設定します。
テーブルの作成tb_r (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
範囲による参加 (id)
(
パートp1の値は (1000) 未満、
PARTITION p2の値は (2000) より少なく、
PARTITION p3の値は (3000) よりも少なく、
PARTITION pm値より少ない (最大値)
)
ベクターパーティションキーの使用
RANGEパーティショニングにベクターパーティションキーが使用されている場合、RANGEパーティショニングは自動的にRANGE COLUMNSパーティショニングに変換されます。 次のサンプルコードは、bid列とid列に基づくRANGEパーティション分割の例を示しています。
テーブルの作成tb_r (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
範囲による参加 (入札、id)
(
パートp1の値は (1,1000) 未満、
PARTITION p2の値は (2,2000) より少なく、
より少ないPARTITION pm値 (MAXVALUE、MAXVALUE)
)
前述のRANGEパーティショニングは、RANGE COLUMNSパーティショニングに自動的に変換されます。 次のサンプルコードは、RANGE COLUMNSパーティション分割の例を示します。
テーブルの作成tb_r (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
RANGE COLUMNSによるパーティー (入札、id)
(
パートp1の値は (1,1000) 未満、
PARTITION p2の値は (2,2000) より少なく、
より少ないPARTITION pm値 (MAXVALUE、MAXVALUE)
)
データ型の制限
整数型: BIGINT、BIGINT UNSINGEDINT、INT、INT UNSINGED、MEDIUMINT、MEDIUMINT UNSINGED、SMALLINT、SMALLINT UNSINGED、TINYINT、およびTINYINT UNSINGED
日付と時刻のタイプ: DATETIME、Date、およびTIMESTAMP
文字列型: CHARおよびVARCHR