[SQL] MYSQL - IN과 존재의 차이
SQLMYSQL - IN과 존재의 차이
MySQL의 질문 :
[NOT] IN과 [NOT] 존재하는 MySQL의 서브 쿼리를하고의 차이점은 무엇입니까.
해결법
-
==============================
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.그들은 매우 다르게 작동합니다 :
그들은 매우 다르게 작동합니다 :
그러나 모두는 당신이 조심하지 않는 한 테이블 A의 행 테이블 B에 일치하는 행이 있는지 확인하고 종종 더 복잡한 쿼리에 많은 가난한 성능을 제공으로 내가 MySQL의에서 IN 분명히있을 것입니다 무엇을하고 있는지 알 수 있습니다 . 사용하지 존재 또는 ... NULL이고 왼쪽은 ... 가입.
from https://stackoverflow.com/questions/3999600/mysql-difference-between-in-and-exist by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] DB2의 쿼리에서 구분 된 문자열을 만들기 (0) | 2020.06.09 |
---|---|
[SQL] 모두 일치하는 정규 표현식은 T-SQL 스크립트에 댓글 (0) | 2020.06.09 |
[SQL] DATE에 시간대와 오라클 변환 TIMESTAMP (0) | 2020.06.09 |
[SQL] 다른 컬럼에서 순서에 따라 그룹에서 하나 개의 값을 선택 (0) | 2020.06.09 |
[SQL] SQL 현재 행의 다음 또는 이전 행에 대해 행을 당겨 (0) | 2020.06.09 |