0

サブセレクトで指定された 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
;

詳細:

  1. 最初のサブ選択では、2010-01-01 から 2014-01-01 までの日付の列が 1 つだけ返されます (1400 日付より少し多いと思います)。
  2. 2 番目の副選択は、2 つの列と 2 つの行を持つテーブルを提供します。
min_date    max_date 
2013-02-01    2013-05-01
2013-06-01    2013-07-01

上記のエラー メッセージが表示される理由がわかりません。小さな 2 つのテーブル (約 1400 行とちょうど 2 行) をマージしています。left-join の最終結果は、左側のテーブルよりも大きくなってはなりません。問題はどこだ?

4

0 に答える 0