2

次の 2 つの方法で SQL クエリを作成しました。基になるデータが巨大であるため、両方のクエリでデータを取得するのに時間がかかるためです。

アプローチ 1:

 SELECT A.Col1, B.Col2
  FROM TableA A 
  LEFT JOIN TableB B
  ON ((A.C1= B.C1 AND A.C2= B.C2) OR (A.C1=B.C2 OR  A.C2 = B.C1))
  WHERE B.Col2 IS  NULL

アプローチ 2:

  SELECT A.Col1, B.Col2
  FROM TableA A 
  WHERE NOT  EXISTS
  (
  SELECT 1 FROM TableB B
  ((A.C1= B.C1 AND A.C2= B.C2) OR (A.C1=B.C2 OR  A.C2 = B.C1))
  )

これを実装するためのより良いアプローチを提案できる人はいますか。

4

1 に答える 1

1

あなたのクエリはうまく見えます(私はそれらが同等であるとは思いませんが)。ただし、ここでの方法は、A.C1、A.C2、B.C1、B.C2にインデックスを作成することだと思います。これは物事を大幅にスピードアップします。

于 2012-12-17T04:38:57.150 に答える