본문 바로가기

오라클

[liveSQL] 조인 - 외부 조인, 3가지 표현 방법 1. 외부 조인 참조하려는 대상이 참조 테이블에 반드시 있음을 예상하지 못 할 때 사용하는 조인 방법임 (표현식1) [ LEFT | RIGHT | FULL ] OUTER JOIN 표현 (표현식2) 참조하는 테이블 (+) = 참조되는 테이블 (표현식3) 스칼라 서브쿼리식 표현 2. 표현 방법 (총 3가지 표현) //(+)식 표현 SELECT a.id, a.name, b.location FROM A a, B b WHERE a.id (+)= b.id; //OUTER JOIN 표현 SELECT a.id, a.name, b.location FROM A a LEFT OUTER JOIN B b ON a.id = b.id; //스칼 서브 쿼리식 표현 SELECT a.id, a.name, (SELECT location ..
[liveSQL] 조인 - Hash Semi 조인, 조건문에 따른 실행계획 차이 1. Hash Semi Join과 Filter Semi Join '=' 이외에 연산이 추가되면 어떻게 동작을 하나. 아울러서 'Filter' 형 Semi Join과 헷갈리는 부분(둘다 In, Exists 사용하므로) 해소. 2. 실행 결과 //Hash SJ 대표적인 형태 SELECT - FROM A a WHERE EXISTS (SELECT 'x' FROM B b WHERE a.id = b.id AND other condition) //저기서 //"other condition" 부분을 추가하는 것으로, //차이를 알아보고자 함. (1) '='만 사용 (2.1) '(1)' + 서브 쿼리 문내 조건절 추가(uncorrated, corrated) - corralted..
[liveSQL] 쿼리 변환, 서브쿼리 Unnesting(2) 2020/02/27 - [공부/SQL] - [liveSQL] 쿼리 변환, 서브 쿼리 Unnesting(1) 1. 서브 쿼리 Unnesting 내부 실행계획의 차이 서브 쿼리 Unnesting을 시행할 때, 서브 쿼리 내에 PK/FK 인덱스, Unique 인덱스가 없으면 옵티마이저는 서브 쿼리를 풀어내지 않는다. 그럼에도 불구하고, 사용자가 풀어내려고 했을 때 driving table이 메인/서브 테이블에 따라 동작을 달리 한다는 것이 앞서 말한 내용임. 그런데, 이 때 인덱스(not unique, not PK/FK)를 추가적으로 생성하여 실행했을 경우 내부 실행계획이 달라졌기 때문에 이해 아닌 이해를 해보기로 함.(oracle의 옵티마이저 동작 방식을 그저 외워버리는 것이므로) 2. 지난 결과문 (unn..