sql >> データベース >  >> RDS >> Oracle

JavaコードでORA-01795を解決する方法

    この制限を回避するには、次の3つの方法が考えられます。

    1)すでに述べたように、ステートメントを1000のバッチに分割します

    2)値を使用して派生テーブルを作成し、それらを結合します。

    with id_list (id) as (
      select 'V1' from dual union all
      select 'V2' from dual union all
      select 'V3' from dual
    )
    select *
    from the_table
    where column_name in (select id from id_list);
    

    あるいは、これらの値を結合することもできます-さらに高速になる可能性があります:

    with id_list (id) as (
      select 'V1' from dual union all
      select 'V2' from dual union all
      select 'V3' from dual
    )
    select t.*
    from the_table t
      join id_list l on t.column_name = l.id;
    

    これはまだ本当に、本当に巨大なステートメントを生成しますが、1000IDの制限はありません。 Oracleがこれをどれだけ速く解析するかはわかりません。

    3)値を(グローバル)一時テーブルに挿入してから、INを使用します 句(またはJOIN )。これはおそらく最速の解決策になるでしょう。



    1. Snow Leopard + Ruby 1.9.1 + MySQLGem=大きな問題

    2. SQLServerの緊急モードからデータベースを回復する

    3. MySQLのツリー構造テーブルを1回のクエリで任意の深さまでクエリすることは可能ですか?

    4. mysql datetimeでjqueryカウントダウンタイマーを使用していますか?