최소값/최대값 구하기 EXPLAIN PLAN FOR SELECT MAX(A.customAge) customAge FROM Ex4_Custom A WHERE A.customApplyDate > '20010101' SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); PLAN_TABLE_OUTPUT ...
SQL_튜닝_36
예제소스 https://gitlab.com/kimdongy1000/sqltuningproject EX25 참고 인덱스를 이용한 소트 연산 생략 우리는 앞서서 인덱스는 항상 키 컬럼 순으로 정렬된 상태를 유지한다 이를 활용하면 SQL에 Order By 또는 Group By 절이 있어도 소트 연산을 생략할 수 있다 인덱스 선두 컬럼으로 소트 연산 생...
SQL_튜닝_35
소트가 발생하지 않도록 SQL 을 작성 우리는 앞에서 여러 가지 Sort 오퍼레이션을 보았다 SQL 을 작성할 때 불필요한 소트가 발생하지 않아야 한다 앞에서 소트에 대한 성능 처리도 만만치 않다는 것을 보았다 Union VS Union ALL 이 둘의 차이는 근본적으로 다르다 Union 은 중복을 제거하고 결과 집합을 만드는 반면 Union ALL...
SQL_튜닝_34
소트 연산 SQL 수행 도중 가공된 데이터 집합이 필요할 때 오라클은 PGA 와 TEMP 테이블 스페이스를 활용한다 소트 머지 조인, 해시 조인 이 대표적이다 소트 수행 과정 소트는 기본적으로 PGA에 할당한 Sort Area에서 이루어진다 메모리 공간인 Sort Area 가 다 차면 디스트 TEMP 테이블 스페이스를 활용한다 그래서 소트는 총 2가...
SQL_튜닝_33
참고소스 https://gitlab.com/kimdongy1000/sqltuningproject EX23 참고 스칼라 서브쿼리 이름에도 알 수 있다 시피 스칼라라는 단어 뜻 자체가 단일 값을 의미합니다 즉 서브 쿼리 결과가 반드시 하나의 값으로 귀결되어야 합니다 쿼리 SELECT empno, ename, sal...
SQL_튜닝_32
참고소스 https://gitlab.com/kimdongy1000/sqltuningproject EX22 참고 View 쿼리 하나의 쿼리를 뭉뚱그려셔 view 쿼리라고 부르게 됩니다 예를 들어서 다음과 같은 쿼리에서 view 쿼리는 이런 모양입니다 SELECT c.고객번호 , c.고객명 , t.평균거래 , t.최소거래 , t.최대거래 from ...
SQL_튜닝_31
참고소스 https://gitlab.com/kimdongy1000/sqltuningproject EX21_Pushing 참고 서브쿼리 Pushing ******************************************************************************** SELECT /*+leading(p) use_nl(t)...
SQL_튜닝_30
서브 쿼리와 조인 메인 쿼리와 서브 쿼리 간에는 부모와 자식이라는 종속적이고 계층적인 관계가 존재한다 서브 쿼리는 메인 쿼리에 종속되므로 단독으로 실행할 수 없으며 메인 쿼리 건수만큼 값을 받아 반복적으로 필터링하는 방식으로 실행해야 한다 스크립트 -- EMP 테이블 생성 CREATE TABLE EX_20_EMP ( EMP_ID NUMBE...
SQL_튜닝_29
서브 쿼리 조인 앞에서 NL 조인, 소트 머지 조인, 해시 조인 세 가지를 배웠는데 실무에 있다 보면 서브 쿼리 조인이라는 것이 있다 이 서브쿼리는 옵티마이저가 다양한 형태로 쿼리 변환을 시도하므로 서브 쿼리 조인을 이해하는 출발점은 쿼리 변환에서 찾아야 한다 서브 쿼리 변환이 필요한 이유 하나의 결과 집합을 얻기 위해 SQL 을 여러 가지 다른 형...
SQL_튜닝_28
해시 조인 NL 조인은 인덱스를 이용한 조인 방식임으로 인덱스 구성에 따른 성능 차이가 심하다 인덱스를 아무리 완벽하게 구성해도 랜덤 I/O 때문에 대량 데이터 처리에 불리하고 버퍼캐시 히트율에 따라 들쭉날쭉한 성능을 보인다 소트 머지와 해시 머지는 인덱스를 이용하지 않기 때문에 일정한 성능을 보인다 소트 머지 단점 앞에서 말했지만 소트 머지는 기본...