본문 바로가기

Database & Bigdata/SQLD17

[SQLD] SQL 최적화의 원리 - 옵티마이저와 실행 계획, 옵티마이저 종류, 인덱스, 실행 계획, 옵티마이저 조인 1. 옵티마이저 (Optimizer) - SQL 개발자가 SQL을 작성해 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것인지를 계획하게 됨 (즉, 실행 계획을 수립하고 SQL을 실행) - 옵티마이저는 SQL을 실행 계획을 수립하고, SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어 - 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라서 성능이 달라짐 - 옵티마이저의 실행 계획은 SQL 성능에 아주 중요한 역할을 함 2. 옵티마이저 특징 - 옵티마이저는 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용 산정 - 옵티마이저는 여러 개의 실행 계획 중에서 최저비용을 가지고 있는 계획을 선택해서 SQL을 실행 3. 옵티마이저의 필.. 2020. 8. 25.
[SQLD] SQL 활용 - 그룹 함수, 윈도우 함수, 테이블 파티션 1. ROLLUP - GROUP BY 칼럼에 대해 Subtotal을 만들어준다. SELECT DECODE(DEPTNO,NULL,'전체합계',DEPTNO),SUM(SAL) // DEPTNO가 NULL이면 '전체합계' FROM EMP2 GROUP BY ROLLUP(DEPTNO); // 부서별&총 합계산 GROUP BY ROLLUP(컬럼명); SELECT DEPTNO, JOB , SUM(SAL) FROM EMP2 GROUP BY ROLLUP(DEPTNO,JOB); - 부서별 합계, 직업별 합계, 전체합계 모두 조회 2. GROUPING 함수 - ROLLUP,CUBE,GROUPING SETS에서 생성되는 합계값을 구분하기 위해 만들어진 함수 ex) 소계, 합계 등이 계산되면 GROUPING 함수.. 2020. 8. 22.
[SQLD] SQL 활용 - 계층형 조회, 서브쿼리 - Oracle 데이터베이스에서 지원하는 것으로 계층형으로 데이터를 조회할 수 있음 ex) 부장에서 차장, 차장에서 과장, 과장에서 대리, 대리에서 사원 순으로 트리 형태의 구조를 위에서 아래로 탐색하면서 조회하는 것 (역방향도 가능) - Connect by는 트리 형태의 구조로 질의를 수행하는 것 - START WITH 구는 시작 조건을 의미 - CONNCT BY PRIOR는 조인 조건 - Root 노드로 부터 하위 노드의 질의를 실행 - 최대 계층 수 구하기 SELECT MAX(LEVEL) // LEVEL은 계층값을 가짐 FROM EMP2 START WITH MGR IS NULL // 가장 상위 관리자인 경우 CONNECT BY PRIOR EMPNO = MGR.. 2020. 8. 22.
[SQLD] SQL 활용 - JOIN(조인) 1. EQUI(등가) 조인 - 조인 : 여러 개의 릴레이션을 사용해 새로운 릴레이션을 만드는 과정 - 조인의 가장 기본은 교집합을 만드는 것 (두개의 테이블 간에 일치하는 것을 조인) SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO // '='로 두개의 테이블을 연결 AND EMP.ENAME LIKE '임%'; // 조인문에 추가 조건 사용 가능 WHERE 테이블명1.컬럼명 = 테이블명2.컬럼명 ; 2. INNER JOIN - ON문을 이용해 테이블을 연결 - 테이블 전체를 읽은 다음 해시 함수를 사용해 두 개의 테이블을 연결 (테이블을 해시 메모리에 적재한 후 해시 함수로써 연결하는 방법) - 해시 조인은 EQUI 조인만 사용 가능 * 해시조인 1. 선행.. 2020. 8. 21.