복붙노트

[SQL] MYSQL - IN과 존재의 차이

SQL

MYSQL - IN과 존재의 차이

MySQL의 질문 :

[NOT] IN과 [NOT] 존재하는 MySQL의 서브 쿼리를하고의 차이점은 무엇입니까.

해결법

  1. ==============================

    1.말 그대로 EXISTS 지정 기준의 존재 여부를 확인하기위한 것입니다. IE를 당신이 때 col_a 알고 싶어 모두 일치 col_b 경우 - - IN 절 때보 다 조금 더 강해질 현재 표준 SQL에서, 당신이 비교를 위해 하나 개 이상의 조건을 지정할 수 있습니다. 그래서 가독성과 휴대 성 모두 더 나은 선택 EXISTS, MySQL은 튜플을 지원하지만 구문은 이식 할 수 없습니다.

    말 그대로 EXISTS 지정 기준의 존재 여부를 확인하기위한 것입니다. IE를 당신이 때 col_a 알고 싶어 모두 일치 col_b 경우 - - IN 절 때보 다 조금 더 강해질 현재 표준 SQL에서, 당신이 비교를 위해 하나 개 이상의 조건을 지정할 수 있습니다. 그래서 가독성과 휴대 성 모두 더 나은 선택 EXISTS, MySQL은 튜플을 지원하지만 구문은 이식 할 수 없습니다.

    다른 것은 어떻게 운영하고있다 존재합니다 알고 있어야합니다 - 반환을 부울 존재하고 첫 경기에 부울을 반환합니다. 당신이 중복 / 배수를 처리하는 경우 그래서,보다 실행 빨라집니다 존재하거나 데이터와 필요에 따라 결합합니다.

    IN은 OR 절에 대한 문법 설탕입니다. 아주 수용 할 수도 있겠지만, 그 비교 (1000 북쪽)에 대한 값을 많이 처리에 문제가있다.

    NOT 연산자는 논리를 반전시킵니다.

    부모에 대한 하나 개 이상의 자식 레코드가있는 경우 결과 집합을 팽창 위험을 조인하기 때문에 진언은 결함이 "항상 사용 조인". 예, 당신이 처리 할 DISTINCT 또는 GROUP BY를 사용할 수 있지만이는이 논쟁 가입 사용의 성능 이점을 렌더링 매우 가능성이 높습니다. 데이터, 그리고 당신이 결과 세트에 대해 원하는 알고 - 이러한 SQL을 쓰는 그 수행도에 키가 있습니다.

    언제, 왜 사용하는지 알고 아는 반복하기 - 그렇지 않으면 NOT IN, LEFT 비교 열이 널이 아닌 경우 IS NULL이 MySQL의에서 가장 빠른 제외 목록입니다 가입 / NOT EXISTS 더 나은 선택입니다.

    참고:

  2. ==============================

    2.그들은 매우 다르게 작동합니다 :

    그들은 매우 다르게 작동합니다 :

    그러나 모두는 당신이 조심하지 않는 한 테이블 A의 행 테이블 B에 일치하는 행이 있는지 확인하고 종종 더 복잡한 쿼리에 많은 가난한 성능을 제공으로 내가 MySQL의에서 IN 분명히있을 것입니다 무엇을하고 있는지 알 수 있습니다 . 사용하지 존재 또는 ... NULL이고 왼쪽은 ... 가입.

  3. from https://stackoverflow.com/questions/3999600/mysql-difference-between-in-and-exist by cc-by-sa and MIT license