postgres9.2を使用しています。
以下のようなレコードをもつテーブルAから今回チェック対象となるテーブルBの内容がテーブルAの日付(開始・終了)の期間に重なっていないかをチェックするSQLを考えているのですが、結果だけ見ればできているのですが、速度がレコードが多くなるにつれ厳しくなってくるので、皆様よりアドバイスをいただきたく質問を投下させていただきした。
検索対象テーブルA(レコード数10万程度)
pkey
開始日
終了日
曜日no
チェック対象テーブルB(レコード数最大7千程度)
開始日
終了日
曜日no
これを単純に
テーブルA開始日 ≦ テーブルB終了日 AND
テーブルB開始日 ≧ テーブルA終了日
とすると重なりはすべて抽出されるのですが検索時間が
かなりかかり、どうにか縮められないかと四苦八苦してます・・・
補足ですが、テーブルAはもともと別テーブルのレコードを展開して作成しているテーブルとなります。
そもそもが、用途と期間を指定して作成されているもので、用途には「日時」「期間指定」「曜日指定※時間のみ指定」「季節指定※月日時分のみ指定」が存在し選択できる期間は2018~2035の間となります。
ぶしつけな質問内容と心得ていますが、何か突破口となる糸口にでもたどり着ければと思っていますのでなにとぞアドバイス等よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。