我已经通过以下两种方式编写了一个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))
)
你们中的任何人都可以提出更好的方法来实现这一目标。
答案 0 :(得分:1)
您的查询看起来很好(虽然我不认为它们是等效的)。但是,我认为这里的方法是在A.C1,A.C2和B.C1和B.C2上创建索引。这将大大加快速度。