본문 바로가기
반응형

oracle5

패스트캠퍼스 SQL튜닝캠프 5일차 (1) - 고급 조인 테크닉 여러 상황에서 효율적으로 조인을 사용하는 방법을 알아보겠습니다.1. 누적매출 구하기아래와 같은 형태의 테이블이 있다고 가정하겠습니다.(출처 : 구루비)이 테이블의 데이터에 전체매출 데이터를 포함해서 조회하고 싶습니다.(이렇게 누적 매출이 추가되고 싶습니다.)오라클이라면 분석함수를 이용해서 해결할 수 있습니다.select 지점, 판매월, 매출, sum(매출) over(partition by 지점 order by 판매월 range between unbounded preceding and current row) 누적매출 from 월별지점매출partition by는 Group by에서 집합을 뺀 기능이라고 보시면 됩니다. 즉, 지점 단위로 잘라내기만 한 것입니다.unbounded preceding는 현재 윈도우.. 2017. 8. 30.
패스트캠퍼스 SQL튜닝캠프 4일차 - 조인의 기본 원리와 활용 조인 알고리즘오라클은 아래의 3개 조인 알고리즘을 모두 지원하지만 MySQL에서는 NestedLoop조인만 지원합니다.1. Nested Loop 조인이름 그대로 중첩반복을 사용하는 조인 알고리즘입니다.(출처: SQL 레벨업)위 그림을 참고하여 Nested Loop 조인의 실행순서는 아래와 같습니다.Table A에서 row를 하나씩 반복해가며 스캔합니다. 이 테이블을 Driving Table 혹은 Outer Table이라 합니다. 반대로 Table B (반대편)는 Inner Table이라 합니다.Driving Table의 row 하나마다 내부 테이블의 레코드를 하나씩 스캔해서 Join 조건에 맞으면 리턴합니다.1~2를 Driving Table의 모든 row에 반복합니다.Nested Loop의 실행시간은 다.. 2017. 8. 25.
패스트캠퍼스 SQL튜닝캠프 3일차 - 인덱스 스캔 효율 8. (4) Index Skip Scan을 이용한 비효율 해소Index Skip Scan을 통해 인덱스를 좀 더 효율적으로 사용하는 경우와 방법을 진행해보겠습니다.고객번호, 판매월, 판매구분, 판매금액으로 이루어진 월별고객판매집계 테이블이 있다고 가정합니다. 이때 판매구분 + 판매월을 기준으로 조회해야 할때 어떻게 개선할 수 있을지 확인해보겠습니다.케이스1. 인덱스: 판매구분 + 판매월인덱스를 판매구분 + 판매월로 잡아 수행해보겠습니다.인덱스 : 판매구분 + 판매월 select count(*) from 월별고객판매집계 t where 판매구분 = 'A' and 판매월 between 200801 and 200812실행계획을 수행해보면 ConsistencyRead(LogicalRead)는 281이 나옵니다.... 2017. 8. 23.
맥북에서 오라클 사용하기 (docker + intelliJ) 보통 데이터베이스 관련 스터디나 학원의 경우 대부분이 오라클 데이터베이스를 기준으로 합니다. 하지만 저처럼 맥북을 사용하시는 분들은 오라클을 사용할 수 없어 VM머신등을 사용하는등 어려움이 많습니다. (저같은 경우 패스트캠퍼스 SQL 튜닝 캠프에서 오라클 데이터베이스를 기준으로 하여 어쩔수없이 오라클을 사용하게 되었습니다 ㅠㅠ) 그럼 이제 진행하겠습니다.0. 도커 설치도커를 기본적으로 알고 계시면 전혀 문제 될게 없지만, 모르신다 하여도 요즘은 도커 설치가 OS별로 아주 쉽게 되어있어 금방 하실수 있습니다. Docker 사이트에 접속하여 Docker For Mac 설치파일을 받아 설치하시면 됩니다. 1. 도커 컨테이너 생성 및 실행 설치가 끝나시면 터미널을 열어 컨테이너를 받아야합니다. 오라클 11g 이.. 2017. 8. 6.
패스트캠퍼스 SQL튜닝캠프 2일차 - 인덱스 향상 5. 테이블 Random Access 부하 인덱스를 쓰는 이유는 RowId를 찾기 위함 RowId는 HDD에 있음 RowId를 해시 함수로 돌려 Clustering Factor 테이블 블럭들이 인덱스 정렬 순으로 얼마나 잘 정렬되어있는지에 대한 지표 6. 테이블 Random 액세스 최소화 튜닝 인덱스가 많을 때의 단점 Command(명령 : 등록/수정/삭제)시 인덱스 변경이 필요하여 시간이 많이 소모 인덱스 저장 장소가 필요하여 저장소 용량이 많이 필요하게 됨 옵티마이저가 인덱스를 보고 실행계획을 작성하는데, 이때 인덱스가 많으면 많을수록 옵티마이저는 잘못된 실행계획을 생성할 확률이 높다. 인덱스는 3개 이하를 권장한다. 인덱스 컬럼 추가로 해결하기 문제상황) 인덱스 : deptno + job selec.. 2017. 7. 30.

728x90
반응형