パーティショニングは、大きなテーブルを特定カラムの値に基づいて小さな物理的単位(partition)に分割することです。クエリからは 1 つの論理テーブルに見えますが、DB は必要な partition だけを読み取ったり管理したりできます。
仕組み
sql
CREATE TABLE orders (
id INT,
order_date DATE,
amount DECIMAL
)
PARTITION BY RANGE (order_date);
CREATE TABLE orders_2026_01 PARTITION OF orders
FOR VALUES FROM ('2026-01-01') TO ('2026-02-01');
この例では order_date の範囲で注文テーブルを分割します。
主な種類
text
Range partitioning → 日付や数値範囲で分割する
List partitioning → 地域やステータスなど値のリストで分割する
Hash partitioning → ハッシュ値で均等に分散する
利点
text
✓ partition pruning により不要な partition を読まない
✓ 古いデータの削除やアーカイブが簡単
✓ 大規模テーブルの index やメンテナンスを扱いやすい
✓ 時系列データやログ、注文履歴に向いている
注意点
text
✗ 小さいテーブルでは不要
✗ partition key を含まない query では効果が出にくい
✗ 設計と運用が複雑になる
✗ DB ごとに構文や制約が異なる
なぜ重要なのか
パーティショニングは、非常に大きなテーブルを運用するための重要な設計です。特に日付で絞り込むログ、イベント、注文履歴などでは、不要な partition を読み飛ばすことで性能を改善できます。ただし、万能な高速化手段ではなく、クエリパターンとデータ量に合った partition key を選ぶことが重要です。
