すべてのプロダクト
Search
ドキュメントセンター

PolarDB:リスト分割

最終更新日:Jun 11, 2024

構文

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