'존재하지 않음'과 '존재하지 않음'의 차이점은 무엇입니까?
사이에 무슨 차이가 있습니까?not in
그리고.not exists
오라클 쿼리에서?
사용 시기not in
그리고not exist
?
존재하지 않는 곳과 존재하지 않는 곳의 차이가 명확해집니다.NULL
값을 입력합니다.
예:
create table test_a (col1 varchar2(30 char));
create table test_b (col1 varchar2(30 char));
insert into test_a (col1) values ('a');
insert into test_a (col1) values ('b');
insert into test_a (col1) values ('c');
insert into test_a (col1) values ('d');
insert into test_a (col1) values ('e');
insert into test_b (col1) values ('a');
insert into test_b (col1) values ('b');
insert into test_b (col1) values ('c');
insert into test_b (col1) values (null);
참고: 주요 차이점은test_b
포함null
가치.
select * from test_a where col1 not in (select col1 from test_b);
반환된 행 없음
select * from test_a where
not exists
(select 1 from test_b where test_b.col1 = test_a.col1);
돌아온다
col1
====
d
e
저는 그것이 같은 목적을 가지고 있다고 생각합니다.
not in
또한 문자 그대로의 값을 취할 수 있는 반면에not exists
결과를 비교할 쿼리가 필요합니다.
편집:not exists
사용할 수 있기 때문에 사용하기 좋을 수 있습니다.join
기준에서 인덱스된 열을 사용하는 경우 외부 쿼리를 사용하여 인덱스를 사용할 수 있습니다.
EDIT2: 이 질문도 참조하십시오.
EDIT3: 위의 것들을 취소하겠습니다.
이 링크를 참조하십시오.DB가 이를 어떻게 번역하느냐에 따라 데이터베이스/인덱스 등에 따라 달라질 수 있다고 생각합니다.
성능 차이가 있을 수 있으며, 속도가 더 빠릅니다.
가장 중요한 차이점은 null 처리입니다.쿼리는 내부 및 기존 모두에서 동일하게 작동하는 것처럼 보이지만 하위 쿼리가 null을 반환하면 쇼크가 발생할 수 있습니다.
null 원인이 존재하면 실패할 수 있습니다.
각각의 사용 시기에 대한 더 나은 설명은 Joe Celko의 'SQL for Smarties'를 참조하십시오.
에서 요소 집합에 있는 요소의 존재 여부를 테스트하지 않으므로 더 간단합니다.
존재하지 않음 그룹화(예: sum(x)=z 또는 count(") >3"), 여러 조건의 결과(예: 여러 요소 일치)를 포함하여 더 복잡한 쿼리를 처리할 수 있으며 인덱스를 활용할 수 있습니다.
없는 것이 없는 것보다 쉬운 경우도 있습니다.일반적으로 여기서 일련의 값에서 키 필드의 값을 테스트합니다.
경험상, 저는 없는 것보다 훨씬 더 많은 상황을 포함하기 때문에 존재하지 않는 것을 선호합니다.존재하지 않음은 에 사용되지 않는 모든 상황에 사용할 수 있지만 그 반대는 사용할 수 없습니다.
언급URL : https://stackoverflow.com/questions/1699424/whats-the-difference-between-not-in-and-not-exists
'programing' 카테고리의 다른 글
WordPress에서 wp_remote_get을 사용하여 XML 작업 (0) | 2023.07.06 |
---|---|
CSV, Excel, PDF 형식의 Angular로 데이터 내보내기제이에스 (0) | 2023.07.06 |
SQL Server가 1밀리초씩 손실되는 이유는 무엇입니까? (0) | 2023.07.06 |
VUEX의 상태 변경을 수정하는 방법은 무엇입니까? (0) | 2023.07.06 |
.NET을 사용하여 16진수 색상 코드에서 색상을 가져오려면 어떻게 해야 합니까? (0) | 2023.07.06 |