RANGE COLUMNS パーティショニングは、標準の RANGE パーティショニングを拡張し、2 つの主要な機能を提供します:複数のパーティション列のサポート、および文字列、DATE、DATETIME などの整数以外のデータ型のサポートです。データの分布状況に応じて、整数型のみまたは単一列での RANGE パーティショニングが適さない場合にご利用ください。
各パーティション方式の詳細な比較については、「パーティション方式の概要」をご参照ください。
構文
CREATE TABLE ...
PARTITION BY RANGE COLUMNS (partition_column_list) [PARTITIONS number]
(
PARTITION part_name VALUES LESS THAN (range_bound_value_list),
PARTITION part_name VALUES LESS THAN (range_bound_value_list),
...
)
partition_column_list:
partition_column[, partition_column, ...]
range_bound_value_list:
range_bound_value[, range_bound_value, ...]パーティション境界値は厳密に単調増加でなければなりません。最後のパーティションの上限値として MAXVALUE を指定することで、それより大きいすべての行をカバーできます。
サポートされるデータの型
| 型カテゴリ | サポート対象の型 |
|---|---|
| 整数型 | BIGINT、BIGINT UNSIGNED、INT、INT UNSIGNED、MEDIUMINT、MEDIUMINT UNSIGNED、SMALLINT、SMALLINT UNSIGNED、TINYINT、TINYINT UNSIGNED |
| 日付・時刻型 | DATETIME、DATE |
| 文字列型 | CHAR、VARCHAR |
| 固定小数点型 | DECIMAL(小数部の桁数は 0 である必要があります) |
制限事項
| 制限内容 | デフォルト値 |
|---|---|
| パーティショニング関数 | 非対応 — 列名を直接指定してください |
| テーブルあたりの最大パーティション数 | 8,192 |
| パーティションキーあたりの最大列数 | 5 |
| パーティション名の最大長 | 16 文字(重複不可) |
例
複合キー(日付と ID)によるパーティショニング
birthday および id の複合キーを用いてレコードをパーティション化し、年単位の範囲に加えて、各年ごとに ID を基準としたサブ範囲を設定します:
CREATE TABLE tb_rc(
id BIGINT NOT NULL AUTO_INCREMENT,
bid INT,
name VARCHAR(30),
birthday DATETIME NOT NULL,
PRIMARY KEY(id)
)
PARTITION BY RANGE COLUMNS(birthday, id)
(
PARTITION p1 VALUES LESS THAN('2020-01-01', 1000),
PARTITION p2 VALUES LESS THAN('2021-01-01', 2000),
PARTITION p3 VALUES LESS THAN('2022-01-01', 3000),
PARTITION pm VALUES LESS THAN(MAXVALUE, MAXVALUE)
);最終パーティション pm では、両方の列に対して MAXVALUE を指定しており、それ以前の境界値に該当しないすべての行をカバーします。