2012-12-17 3 views
2

다음 두 가지 방법으로 SQL 쿼리를 작성했습니다. 기본 데이터가 크기 때문에 두 쿼리 모두 데이터를 가져 오는 데 많은 시간이 걸립니다.여러 열 비교를위한 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)) 
) 

당신의 사람이를 구현하는 더 나은 방법을 제안 할 수 있습니다.

답변

1

귀하의 검색어는 괜찮아 보입니다 (비록 그것이 동일하다고 생각하지 않지만). 그러나 여기에가는 방법은 A.C1, A.C2 및 B.C1과 B.C2에 대한 색인을 만드는 것입니다. 이것은 크게 속도를 올릴 것입니다.

+0

여기에 @Ulises와 동의합니다. 색인 생성과 함께 나는 여전히 "Approach 1"과 함께 갈 것입니다. –