'SQLD' 태그의 글 목록
728x90

SQLD 31

3-1장 SQL 최적화 기본 원리 - 3절 조인 수행 원리

1. 조인 개념 두 개 있는 테이블을 하나의 집합으로 만드는 연산 SQL 문에서 FROM 절에 두개 이상의 테이블이 나열될 경우 조인이 수행됨 조인 순서 항상 두 테이블을 조인 선행 테이블(First Table, Outer Table, Driving Table, Build Input) 후행 테이블(Second Table, Inner Table, Driven Table, Probe Input): 선행 테이블로부터 입력값을 받아 처리함, 후행 테이블에 걸리는 조인 조건이 성능에 큰 영향을 미침 조인 기법 NL 조인, Hash 조인, Sort Merge Join 이 있음 2. NL 조인 개념 선행 테이블의 데이터 하나씩 순차적으로 조인. 프로그래밍에서 사용하는 중첩된 반복문과 유사한 방식으로 수행 반복문의 외..

Study/SQLD 2022.07.06

3-1장 SQL 최적화 기본 원리 - 2절 인덱스 기본

1. 인덱스의 특징과 종류 인덱스란? 원하는 데이터를 쉽게 찾을 수 있도록 돕는 기능(검색성능 최적화가 목적) 인덱스는 테이블 기반으로 선택적으로 생성할 수 있는 구조. 인덱스를 생성하지 않아도 되고, 여러 개 생성 가능 인덱스 키로 정렬되어 있어 조회속도가 빠름. DML 작업 효율은 저하됨 명령어: CREATE INDEX 인덱스명 테이블명 ON 테이블명 (칼럼명, …) 트리기반 인덱스 DBMS에서 가장 일반적인 인덱스 루트 블록(Root Block), 브랜치 블록(Branch Block), 리프 블록(Leaf Block)으로 구성됨 ‘=’로 검색하는 일치 검색과 ‘BETWEEN’, ‘>’ 등과 같은 연산자로 검색하는 범위 검색 모두에 적합한 구조 브랜치블록: 분기를 목적으로 하는 블록. 다음 단계의 블..

Study/SQLD 2022.07.05

3-1장 SQL 최적화 기본 원리 - 1절 옵티마이저와 실행계획

1. 옵티마이저 개념 사용자가 질의한 SQL문에 대해 최적의 실행방법을 결정하는 역할 수행 관계형 데이터베이스는 궁극적으로 SQL문을 통해서만 데이터를 처리할 수 있음 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 바로 옵티마이저의 역할 대부분의 관계형 데이터베이스는 비용기반 옵티마이저만을 제공 규칙기반 옵티마이저의 규칙은 보편 타당성에 근거한 것 SQL문에 대한 최적의 실행방법을 결정하여 실행 계획 도출, SQL문에 대한 파싱 후 실행됨 ※ SQL문 실행 순서 ① 파싱(Parsing): SQL 문법 검사 및 구문 분석 작업 ② 실행(Execution): 옵티마이저의 실행 계획에 따라 ③ 인출(Fetch): 데이터를 읽어 전송 옵티마이저 엔진 질의 변환기(Query Transformer):..

Study/SQLD 2022.07.04

2-2장 SQL 활용 - 8절 절차형 SQL

1. 절차형 SQL 개요 절차 지향적인 프로그램이 가능하도록 DBMS 벤더별로 PL/SQL, SQL/PL, T-SQL 등의 절차형 SQL을 제공 절차형 SQL을 이용하면 SQL문의 연속적인 실행이나 조건에 따른 분기처리를 이용하여 특정 기능을 수행하는 저장 모듈을 생성 가능 2. PL/SQL 개요 특징 PL/SQL은 Block 구조로 되어있어 각 기능별로 모듈화가 가능 변수, 상수 등을 선언하여 SQL 문장 간 값을 교환한다. DML, 쿼리, IF, LOOP 등의 절차형 언어를 사용하여 절차적인 프로그램이 가능 DBMS 정의 에러나 사용자 정의 에러를 정의하여 사용 PL/SQL은 Oracle에 내장되어 있으므로 Oracle과 PL/SQL을 지원하는 어떤 서버로도 프로그램을 옮길 수 있다. PL/SQL은 ..

Study/SQLD 2022.07.03

2-2장 SQL 활용 - 7절 DCL(Data Control Language)

1. DCL 개요 DML, TCL 명령어들 이외에도 유저를 생성하고 권한을 제어할 수 있는 DCL(DATA CONTROL LANGUAGE) 명령어 명령어 GRANT: 권한 부여(명령어: GRANT 권한 ON 오브젝트 TO 유저명;) REVOKE: 권한 제거(명령어: REVOKE 권한 ON 오브젝트 TO 유저명;) 2. 유저와 권한 권한(Privileges)의 종류 SELECT, INSERT, UPDATE, DELETE, ALTER, ALL : DML 관련 권한 REFERENCES : 지정된 테이블을 참조하는 제약조건을 생성하는 권한 INDEX : 지정된 테이블에서 인덱스를 생성하는 권한 Oracle에서 제공하는 유저들 SCOTT: Oracle에서 테스트용 샘플 유저 SYS: DBA ROLE를 부여받은 유..

Study/SQLD 2022.07.03

2-2장 SQL 활용 - 6절 윈도우 함수

1. WINDOW FUCTION(윈도우 함수) 개요 개념 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수 WINDOW 함수는 다른 함수와는 달리 중첩(NEST)해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있다. 분석 함수나 순위 함수 사용 방법 명령어: SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ([PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절]) FROM 테이블 명; - WINDOW_FUNCTION: 기존에 사용하던 함수도 있고, 새롭게 WINDOW 함수용으로 추가된 함수도 있음 - ARGUMENTS(인수): 함수에 따라 0 ~ N개의 인수가 지정될 수 있다. - PARTITION BY 절: 전체 집합을 기준에 의해 소그룹으로 나눌 수..

Study/SQLD 2022.07.02

2-2장 SQL 활용 - 5절 그룹함수

1. GROUP FUNCTION(그룹함수)개요 결산 개념의 업무를 가지는 원가/판매 시스템의 경우에 해당. 그룹 함수를 사용하면 하나의 SQL 로 테이블을 한 번만 읽어서 빠르게 원하는 리포트 작성 가능. 소계/합계 표시를 위해 GROUPING 함수와 CASE 함수를 이용. 쉽게 원하는 포맷의 보고서 작성 가능. ROLLUP, CUBE, GROUPING SETS 함수 포함 2. 그룹 함수 종류 ROLLUP 함수 GROUP BY로 묶인 칼럼의 소계 계산을 위해 사용 GROUPING Columns의 수를 N이라 하면, N+1 Level의 Subtotal 이 생성 계층 구조로 GROUP BY의 칼럼 순서가 바뀌면 결과 값 바뀜 CUBE 함수 결합 가능한 모든 값에 대하여 다차원 집계를 생성 내부적으로 Grou..

Study/SQLD 2022.07.01

2-2장 SQL 활용 - 4절 서브쿼리

1. 서브쿼리란 서브쿼리 설명 하나의 SQL 문 안에 포함되어 있는 또다른 SQL문을 말한다. 메인 쿼리가 서브쿼리를 포함하는 종속적인 관계 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다. 질의결과에 서브쿼리 칼럼을 표시해야 한다면 조인 방식으로 변환하거나 함수, 스칼라 서브쿼리 등을 사용 서브쿼리 사용시 주의 사항 서브쿼리를 괄호로 감싸서 사용한다. 서브쿼리는 단일 행 (SINGLE ROW) 또는 복수 행 (MULTIPLE ROW) 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하여야 하고, 복수 행 비교 연산자는 상관 없다. 서브쿼리에서는 ORDER BY 절을 사용할 수 없다. ORDER BY 절은 SEL..

Study/SQLD 2022.06.30

2-2장 SQL 활용 - 3절 계층형 질의와 셀프 조인

1. 계층형 질의 개념 계층형 데이터를 조회하기 위해 사용. 계층형 데이터: 동일 테이블에서 계층적으로 상위와 하위 데이터가 포함된 데이터. 엔터티를 순한관계 데이터 모델로 설계할 경우, 계층형 데이터가 발생한다.(ex. 조직, 사원, 메뉴) 샘플 데이터: 계층형 구조를 데이터로 표현한 것 Oracle 계층형 질의 START WITH 절: 계층 구조 전개의 시작 위치를 지정하는 구문. 루트 데이터를 지정한다. CONNECT BY 절: 다음에 전개될 자식 데이터를 지정하는 구문. 자식 데이터는 CONNECT BY 절에 주어진 조건을 만족해야 한다.(조인 조건 지정) - LEVEL : 검색 항목의 깊이, 루트데이터면 1, 하위데이터면 2 - CONNECT_BY_ROOT : 최상위 계층 값 표시 - CONNE..

Study/SQLD 2022.06.30

2-2장 SQL 활용 - 2절 집합연산자

1. 집합연산자란? 개념 두개 이상 테이블에서 서로 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 집한연산자는 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용(기존의 JOIN은 FROM 절에 검색하고자 하는 테이블을 나열하고, WHERE절에 조건을 기술) 집합 연산자를 사용하는 경우 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합칠 때 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합칠 때 튜닝 관점에서 실행 계획을 분리하고자 하는 목적일 때 집합 연산자를 사용하기 위한 제약조건 SELECT 절의 칼럼 수가 동일해야 한다. SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환 가능해야 한다. 제약조건을 만족하지 않을 경우, 데이터베이스가..

Study/SQLD 2022.06.29
728x90