メインコンテンツまでスキップ

Software Design 202502

実践データベースリファクタリング / 時間枠

複雑な時間枠の検索には特効薬はないが、Postgres の機能を活用は一考に値する。

配列型を使うと、複数の値を一つのカラムに格納できる。 JOIN を減らせる、GIN インデックスを活用できる、などのメリットがある。 正規化は失われる。整合性はアプリケーション側で担保する必要がある。

複数範囲型を使うと、ループを回すことなく、一度のクエリで複数の時間枠を検索できる。 GiST インデックスが活用でき、排他制御も使える。