0

より速く動作するもの:

  • JOIN 2 テーブル (18000 行、15500 行) を使用してクエリを実行し、
    複数の WHERE (9-12 WHERE) でデータをフィルターして、結果が 15 行のみになるようにします。

    このクエリを異なる WHERE フィルターで 4 回実行し、毎回結果項目を異なる配列 (4 つの配列) に追加する必要があります。

また

  • クエリを 1 回実行します:
    JOIN 2 テーブル (18000 行、15500 行) はすべてのデータを取得し、結果をループします。ループでは、4 つの if ステートメント (基本的に WHERE フィルターを置き換えます) があり、一致する項目が追加されます。配列に。

?

4

1 に答える 1

0

ステートメントで両方を行うのはどうですか:case

select (case when <where1> then 1 else 0 end) as Where1,
       (case when <where2> then 1 else 0 end) as Where2,
. . .

次に、小さな行のセットを元に戻し、アプリケーション内のどこに移動するかを決定できます。

クエリを処理し、結果を返し、アプリケーションで結果セットを処理するのにかかる時間に依存するため、あなたの質問に答えるのは困難です。一般に、数万行を返すことは、ほんの一握りの行を返すことに比べて、(パフォーマンス的に) 悪いことだと思います。ただし、一部の環境では、この方法の方が適切な場合があります。

すべてのwhere句が互いに素な行のセットを返す場合、それらを単一の派生列に入れることができます。

select (case when <where1> then 'where1'
             when <where2> then 'where2'
             . . .
        end) as which
于 2013-02-19T16:36:00.110 に答える