MySQLで月ごとのレンジパーティションを設定する。
はじめに
データベースではパーティション化を行うことで、テーブルを分割してデータの格納場所を分けることができます。 今回は特定のDATEカラムを月ごとのレンジパーティション化にするSQLを記載致します。
既存のテーブルに適用する
ALTER TABLE 'テーブル名' PARTITION BY RANGE COLUMNS('カラム名') ( PARTITION p202109 VALUES LESS THAN ('2021-10-01'), PARTITION p202110 VALUES LESS THAN ('2021-11-01'), PARTITION p202111 VALUES LESS THAN ('2021-12-01'), PARTITION p202112 VALUES LESS THAN ('2022-01-01'), PARTITION pmax VALUES LESS THAN MAXVALUE );
※2022年1月1日以降のデータが入った時のことも考慮し、MAXVALUEも追加しています。
新規作成するテーブルに適用する
カラムBを用いて月ごとのパーティション化を行います。
CREATE TABLE 'テーブル名' ( カラムA varchar(128), カラムB date, カラムC int(10) ) PARTITION BY RANGE COLUMNS(カラムB) ( PARTITION p202109 VALUES LESS THAN ('2021-10-01'), PARTITION p202110 VALUES LESS THAN ('2021-11-01'), PARTITION p202111 VALUES LESS THAN ('2021-12-01'), PARTITION p202112 VALUES LESS THAN ('2022-01-01'), PARTITION pmax VALUES LESS THAN MAXVALUE );