1. 程式人生 > >MySQL對已有資料的表進行分割槽表

MySQL對已有資料的表進行分割槽表

1 可以使用ALTER TABLE來進行更改表為分割槽表,這個操作會建立一個分割槽表,然後自動進行資料copy然後刪除原表。

ALTER TABLE tbl_rtdata PARTITION BY RANGE (Month(fld_date))
(   
PARTITION p_Apr VALUES LESS THAN (TO_DAYS('2012-05-01')),
PARTITION p_May VALUES LESS THAN (TO_DAYS('2012-06-01')), 
PARTITION p_Dec VALUES LESS THAN MAXVALUE );
但是,這種方法對於伺服器的資源消耗比較大,所以下面還有另一種方法。

2 新建一個和原來表一樣的分割槽表,然後把資料從原表匯出,接著倒入新表。 

先建立分割槽表,然後匯出原表資料,新表名稱改為原表名,然後插入。

CREATE TABLE `news` (
  `new_id` int(5) NOT NULL AUTO_INCREMENT,
  `new_title` varchar(130) NOT NULL,
  `new_type` int(2) NOT NULL,
  `new_img` varchar(100) NOT NULL,
  `new_desc` text NOT NULL,
  `new_user` varchar(100) NOT NULL,
  `add_time` varchar(13) NOT NULL,
  PRIMARY KEY (`new_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
PARTITION BY RANGE (new_id)
(PARTITION p1 VALUES LESS THAN (200) ENGINE = MyISAM,
 PARTITION p2 VALUES LESS THAN (400) ENGINE = MyISAM,
 PARTITION p3 VALUES LESS THAN (600) ENGINE = MyISAM,
 PARTITION p4 VALUES LESS THAN MAXVALUE ENGINE = MyISAM);

表建完之後,只需要吧原表的資料拷貝進新建的表中就好了。