サブセレクトで指定された 2 つの小さなテーブルを左マージしようとしていて、エラー メッセージが表示されます。
One of the predicates would lead to too big intermediate results. Table date_rabges_table has more than 5000000 rows or is bigger than 5000000 KB
私が使用するクエリは次のとおりです。
select
*
from
(
select
date
from
dates_table
where
to_date('2010-01-01') <= date
and
date <= to_date('2014-01-01')
)
left join
(
select
min_date, max_date
from
date_ranges_table
where
i_id = 7
and
j_id = 13
)
on
min_date <= date
and
date < max_date
;
詳細:
- 最初のサブ選択では、2010-01-01 から 2014-01-01 までの日付の列が 1 つだけ返されます (1400 日付より少し多いと思います)。
- 2 番目の副選択は、2 つの列と 2 つの行を持つテーブルを提供します。
min_date max_date 2013-02-01 2013-05-01 2013-06-01 2013-07-01
上記のエラー メッセージが表示される理由がわかりません。小さな 2 つのテーブル (約 1400 行とちょうど 2 行) をマージしています。left-join の最終結果は、左側のテーブルよりも大きくなってはなりません。問題はどこだ?