4

リストを使用してMySQLでテーブルをパーティション分割する場合、残りのアイテムのパーティションを生成するにはどうすればよいですか?

例えば:

CREATE TABLE tbl
(
 ID integer
)
PARTITION BY LIST (ID)
(  
  PARTITION P1 values in (1),  
  PARTITION P2 values in (2),  
  PARTITION P3 values in (3),  
  PARTITION Pother values in (<all remaining values of ID>)
);

Oracleでは、を使用values in (default)しますが、MySQLでは機能します。

4

1 に答える 1

3

範囲分割とは異なり、リスト分割には「キャッチオール」はありません。ドキュメントを引用するには:

RANGEパーティショニングの場合とは異なり、MAXVALUEのような「キャッチオール」はありません。パーティショニング式に期待されるすべての値は、PARTITION ... VALUES IN(...)句でカバーする必要があります。一致しないパーティショニング列の値を含むINSERTステートメントがエラーで失敗します...

残念ながら、リストと範囲パーティションを組み合わせることもできないと思います。この特定のインスタンスでリストパーティションを使用する理由は完全にはわかりません。範囲パーティションはうまく機能しませんか?

CREATE TABLE tbl
(
 ID integer
)
PARTITION BY RANGE (ID)
(  
  PARTITION P1 values less than (2),  
  PARTITION P2 values less than (3),  
  PARTITION P3 values less than (4),  
  PARTITION Pother values less than maxvalue
);

これは単なる例だと思います。主キーで各キーを分割することは少し無意味です。

于 2012-10-27T21:36:14.583 に答える