構文
LISTパーティション分割では、各パーティションのパーティションキー値をリストする必要があります。 リストされた各パーティションキー値は一意である必要があります。 DEFAULTを使用して、他のパーティションでカバーされていない行のcatch-allパーティションを定義できます。
テーブルを作成...
PARTITION BY LIST(partition_expr) [PARTITIONS number]
(
PARTITION part_name VALUES IN (list_bound_value_set) 、
PARTITION part_name VALUES IN (list_bound_value_set) 、
...
)
partition_expr:
partition_column
| partition_func(partition_column)
list_bound_value_set:
list_bound_value[, list_bound_value, list_bound_value, ...]
# パーティション関数を定義します。
partition_func:
| TO_DAYS
| TO_MONTHS
| TO_WEEKS
| TO_SECOND
| UNIX_TIMESTAMP
| 月
| DAYOFWEEK
| DAYOFMONTH
| DAYOFYEAR
| SUBSTR
| SUBSTRING
| 右
| 左
LISTパーティション分割とLIST COLUMNSパーティション分割の違いの詳細については、「概要」トピックのLISTパーティション分割とLIST COLUMNSパーティション分割の比較を参照してください。
使用上の注意
LISTパーティションを使用すると、単一列のパーティションキーにパーティション関数を使用できます。 ただし、パーティションキー列のサポートされるデータ型は、パーティション関数によって異なります。
LISTパーティションでは、ベクターパーティションキーにパーティション関数を使用することはできません。
パーティションキー列にはネストされたパーティション分割関数を使用できません。
既定では、パーティション分割テーブルには最大8,192個のパーティションを含めることができます。
デフォルトでは、パーティションキーは最大5つのパーティションキー列で構成できます。
各パーティションの名前は一意である必要があり、デフォルトでは最大16文字の長さにすることができます。
TIMESTAMPなどのタイムゾーンに依存するデータ型の列をパーティションキー列として使用する場合は、パーティションキー列にUNIX_TIMESTAMPパーティション分割関数を使用する必要があります。
例
パーティション分割関数の使用
DATETIME型の誕生日列を単一列パーティションキーとして指定し、TO_DAYSパーティショニング関数を使用して誕生日列の値を日数に変換し、LISTパーティショニングを実行します。
テーブルの作成tb_l_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 ') 、TO_DAYS('2020-02-01')) 、
PARTITION p2の値 (TO_DAYS('2021-01-01 ') 、TO_DAYS('2021-02-01')) 、
PARTITION p3 VALUES IN (TO_DAYS('2022-01-01 ')) 、
パーティションの午後値 (デフォルト)
)
その他のパーティション分割関数の使用方法の詳細については、「パーティション分割関数」をご参照ください。
パーティション分割関数を使用せずにパーティション分割を実行する
LISTパーティション分割の単一列パーティションキーとしてid列を指定し、パーティション数を8に設定します。
テーブルの作成tb_l (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
リストによるパーティー (id)
(
パーティションp1値 (1000,1001、1002) 、
パーティションp2の値 (2000,2001、2002) 、
PARTITION p3の値 (3000) 、
パーティションの午後値 (デフォルト)
)
ベクターパーティションキーの使用
ベクターパーティションキーがLISTパーティション分割に使用されている場合、LISTパーティション分割は自動的にLIST COLUMNSパーティション分割に変換されます。 次のサンプルコードは、birthday列とid列に基づくLISTパーティション分割の例を示しています。
テーブルの作成tb_l (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
リストによるパーティー (誕生日、id)
(
パートp1値 (('1990-04-03 '、1000) 、('1991-04-03' 、2000)) 、
パートp2の値 (('2000-01-03 '、3000) 、('2001-04-03' 、3001)) 、
パーティションの午後値 (デフォルト)
)
前述のLISTパーティショニングは、自動的にLIST COLUMNSパーティショニングに変換されます。 次のサンプルコードは、LIST COLUMNSパーティション分割の例を示しています。
テーブルの作成tb_l (
id bigint not null auto_increment,
bid int,
名前varchar(30) 、
birthday datetime not null,
主キー (id)
)
リストコラムによるパーティー (誕生日、id)
(
パートp1値 (('1990-04-03 '、1000) 、('1991-04-03' 、2000)) 、
パートp2の値 (('2000-01-03 '、3000) 、('2001-04-03' 、3001)) 、
パーティションの午後値 (デフォルト)
)
データ型の制限
整数型: BIGINT、BIGINT UNSINGEDINT、INT、INT UNSINGED、MEDIUMINT、MEDIUMINT UNSINGED、SMALLINT、SMALLINT UNSINGED、TINYINT、およびTINYINT UNSINGED
日付と時刻のタイプ: DATETIME、Date、およびTIMESTAMP
文字列型: CHARおよびVARCHR