NOT EXISTS, NOT IN 또는 LEFT JOIN WHERE가 NULL 인 경우 SQL 쿼리에서 동일한 작업을 수행 할 수 있습니다. 예를 들면 다음과 같습니다.
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
모든 구문이 올바른지 확실하지 않지만 이것이 내가 본 일반적인 기술입니다. 왜 다른 것을 사용하기로합니까? 성능이 다른가요? 이 중 가장 빠르거나 가장 효율적인 것은 무엇입니까? (구현에 따라 달라지면 언제 사용합니까?)
EXISTS절에서 정확히 리턴하는 것을 데이터베이스가 신경 쓰지 않습니다 . *, NULL또는 무엇이든 반환 할 수 있습니다.이 모든 것이 최적화됩니다.
SELECT와 사이에 무언가를 넣도록 요구하는 것에 관한 것 FROM입니다. 그리고 *입력하기가 더 쉽습니다. 예, SQL자연어와 비슷하지만 프로그래밍 된 기계 인 기계에 의해 구문 분석되고 실행됩니다. 그것은 갑자기 당신의 큐비클에 침입하여 " EXISTS파싱 후 파기하는 것에 질려서 쿼리 에서 여분의 필드를 요구하지 말라!"고 외치는 것이 아닙니다 . 컴퓨터로도 괜찮습니다.