0

テーブルの構造を維持しながら、MySQLでテーブルをパーティション分割したいと思います。

'Year'、に基づいて、テーブルを各年ごとに異なるテーブルに分割する列があります。新しいテーブルには、などの名前が付け'table_2012'られ'table_2013'ます。結果のテーブルには、ソーステーブルとまったく同じようにすべてのフィールドが含まれている必要があります。

次の2つのSQLスクリプトを試しましたが、成功しませんでした。

1.1。

CREATE TABLE all_data_table
(   column1 int default NULL,
    column2 varchar(30) default NULL,
    column3 date default NULL
) ENGINE=InnoDB  
PARTITION BY RANGE ((year)) 
(
    PARTITION p0 VALUES LESS THAN (2010),
    PARTITION p1 VALUES LESS THAN (2011) , PARTITION p2 VALUES LESS THAN (2012) ,
    PARTITION p3 VALUES LESS THAN (2013), PARTITION p4 VALUES LESS THAN MAXVALUE 
);

2.2。

ALTER TABLE all_data_table PARTITION BY RANGE COLUMNS (`year`)  (
    PARTITION p0 VALUES LESS THAN (2011),
    PARTITION p1 VALUES LESS THAN (2012),
    PARTITION p2 VALUES LESS THAN (2013),
    PARTITION p3 VALUES LESS THAN (MAXVALUE)
);

どんな援助もいただければ幸いです!

4

2 に答える 2

1

私が見たところ、あなたは 1 つの大きなテーブルから多くのテーブルを作成したいと考えています。

代わりにビューを作成してみるべきだと思います。パーティション分割について調べてみると、実際にはそのテーブルの物理ストレージをパーティション分割してから、別々に保存しています。しかし、上から見ると、それらは 1 つのテーブルとして表示されます。

于 2013-03-15T06:31:42.363 に答える