2

我用以下两种方式编写了一个 SQL 查询,因为底层数据很大,所以这两个查询都需要大量时间来获取数据。

方法一:

 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

方法二:

  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 回答