テーブルを分割したい。テーブルは次のとおりです。
create_table "multimedia", :force => true do |t|
t.integer "id"
t. binary "data"
t.integer "device_id"
t.datetime "created_at"
end
id
主キー
です created_at はテーブルの単純なインデックスであり、一意ではありません
フィールド created_at でテーブルを分割する必要があります。私のテーブルには過去 7 日間のレコードしかないので、日ごとに分割したいと思います。私はこのコーズを書きます:
partition by range (to_days(created_at))
( PARTITION p20120417 VALUES LESS THAN (to_days('2012-04-17 23:59:59 +0200')),
PARTITION p20120418 VALUES LESS THAN (to_days('2012-04-18 23:59:59 +0200')),
PARTITION p20120419 VALUES LESS THAN (to_days('2012-04-19 23:59:59 +0200')),
PARTITION p20120420 VALUES LESS THAN (to_days('2012-04-20 23:59:59 +0200')),
PARTITION p20120421 VALUES LESS THAN (to_days('2012-04-21 23:59:59 +0200')),
PARTITION p20120422 VALUES LESS THAN (to_days('2012-04-22 23:59:59 +0200')),
PARTITION p20120423 VALUES LESS THAN (to_days('2012-04-23 23:59:59 +0200')),
PARTITION p20120424 VALUES LESS THAN (to_days('2012-04-24 23:59:59 +0200'))
);
コードは私にこのエラーを与えます:
PRIMARY KEY には、テーブルのパーティショニング関数のすべての列が含まれている必要があります
テーブルが created_at によってのみパーティション化される必要があり、一意にすることはできません。
どのようにできるのか?