おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

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
);