2

innoDB テーブルにパーティションを追加したいと考えています。これの構文を検索しようとしましたが、詳細は見つかりませんでした。

この構文は間違っていますか? :

ALTER TABLE Product PARTITION BY HASH(catetoryID1) PARTITIONS 6
SUBPARTITION BY KEY(catetoryID2) SUBPARTITIONS 10;

SUBPARTITIONS 10各メイン パーティションに 10 個のサブパーティションがあるということですか、それともすべてのメイン パーティションに 10 個のサブパーティションが分割されているということですか?

4

2 に答える 2

3

構文が見つからなかったのは奇妙です。MySQL のオンライン ドキュメントには、最も一般的な操作の非常に詳細な構文がリストされています。

パーティションを操作するための alter table の全体的な構文については、こちらを参照してください。

http://dev.mysql.com/doc/refman/5.5/en/create-table.html

パーティション管理の構文は、alter table ステートメントで使用した場合でも同じままですが、MySQL ドキュメントの alter table 構文ページにいくつかのニュアンスがリストされています。

最初の質問に答えるために、問題は構文ではなく、ハッシュ パーティション分割によって最初にパーティション分割されたテーブルをサブパーティション化しようとしていることです。これは、少なくとも MySQL 5.5 では許可されていません。サブパーティション化できるのは、レンジ パーティションまたはリスト パーティションのみです。

パーティショニング タイプの完全なリストについては、こちらを参照してください。

http://dev.mysql.com/doc/refman/5.5/en/partitioning-types.html

2 番目の質問については、試していたことがうまくいくと仮定すると、catetoryID1 でハッシュされた 6 つのパーティションが作成され、その中に、cateoryID2 でハッシュされた 10 個のサブパーティションが作成されます。だから、あなたはすべて持っているでしょう

6 x 10 = 60 partitions
于 2012-10-12T07:03:20.400 に答える