値の非常に長いリストからSQLの選択

ルーカスNoetzold:

私は大きなリストに基づいて選択する必要があります。

SELECT ... FROM tb WHERE tb.cl IN (?, ?, ?, ..................many)

ドライバの実装(ので、私は、このようにそれを行うことはできませんJaybirdは)最大1500個のパラメータにクエリを制限し、十分なメモリがありませんので、また、私はアプリ内/負荷すべてのフィルタを選択することはできません。

私は何をすべきか?

追加情報

私はそれがよりよいフィットうJPQLで行うことができそうだとすれば、HibernateとJPAリポジトリで春のブートを使用するか、または他のいくつかの環境関連技術を使用しています。

私は実際に使用されます...WHERE tb.cl NOT IN...、それはどんな違いがあれば、。
ネストされた選択を使用することはオプションではありませんので、それは、私は2つの異なるデータベースに接続するよ、ちょっとEDIのようなものです。

ヘラルド・アロヨ:

一つの選択肢は、使用することです一時テーブルを、あなたがそのテーブルに必要があるとして、多くのインサートとして行います。その後、あなたは使用することができます。

Select .. from tb where tb.cl in (select cl from myTempTable)

その後、一時テーブルまたはドロップで切り捨てを行います。あなたはパラメータを使用している場合は、私の知る限りでは、すべての主要なリレーショナルデータベースは、IN句に制限を設定します。一方、一時テーブルを使用すると、トリックを行います。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=331524&siteId=1