9

簡単な商品表を作ってみましょう。各製品には固有の ID とカテゴリがあります。ユーザーはカテゴリ別に検索することが多いので、製品をカテゴリ別に分割したいと考えています。1 つのパーティション内の各カテゴリ

どうすればいいのですか?もちろん、ID 列に主キーがあり、ID が一意である必要があるためです。各カテゴリで一意ではありません。

ただし、パーティショニングには、「テーブルのすべての一意のキーは、テーブルのパーティション式のすべての列を使用する必要がある」という制限があります。

さて、これではパーティショニングが少し役に立たなくなりませんか? または、何か不足していますか?私は何をすべきか?

http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html

4

1 に答える 1

13

秘訣は、フィールドcategoryを現在の主キーに追加することです。(主キーは主キーのままです)
次に、テーブルをカテゴリ別に分割できます。

使用できるコードは次のとおりです。

ALTER TABLE `products` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` , `category` );
ALTER TABLE `products` PARTITION BY KEY(category) PARTITIONS 6;

auto_increment本当に一意にしたい場合は id にオプションを追加し、テーブルにデータを挿入するときに id 値を指定しないでください。ID は、挿入時にデータベース サーバーによって決定されます。

必要に応じて、フィールド名とキー名を変更します。

ドキュメンテーション:
パーティショニング タイプ
KEYパーティショニング

于 2012-08-01T16:28:15.920 に答える