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

Hibernate + Oracle IN句の制限、それを解決する方法は?

    まず、2000を超えるID(最初のポイントで判断)をクエリに渡す必要があるという事実は、それ自体が警告ベルです。おそらく、根本的な問題を解決するためのより良い方法があります。

    アプローチ#2を使用して各リストを並べ替えてから、アプリケーション内でマージソートを実行できます。これには追加のコードが必要になりますが、(実際のクエリが比較的高速であると仮定して)アプローチ#3よりもパフォーマンスが向上する可能性があります。

    #3の場合、一時テーブルを処理することには2つの大きな欠点があります。

    • Hibernateはそれらをサポートしますが(Table.sqlTemporaryTableCreateStringを参照してください) メソッド、それはDialectのサポートメソッドの束を使用します クラス)、それらは内部で使用され、アプリからアクセスできるようにするには、追加のコーディングが必要になります。
    • さらに重要なことに、一時テーブルを使用すると、クエリをネイティブSQLとして記述する必要があります(マップされないため)。 Criteria APIを使用している場合は、sqlRestrictionを使用する必要があります サブクエリを使用します。


    1. Windows:XAMPP vs WampServer vsEasyPHPvs代替

    2. R12/R12.2のOracleForms

    3. リモートサーバーへのmysqli_connect

    4. pi()関数がJDBCドライバーを使用するOracleで機能しないのはなぜですか?