자격증/SQLD 12

SQLD (7)

▶옵티마이저 (Optimizer) -SQL을 작성하고 실행할 때, 옵티마이저는 SQL을 이떻게 실행할 것인지를 계획함 -즉, SQL 실행계획 (Execution Plan)을 수립하고 SQL을 실행 함 -SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어 임 -동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라 성능이 달라짐 ∴옵티마이저의 실행 계획은 SQL 성능에 아주 중요한 역할을 함 ▶옵티마이저 특징 -데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정 함 -여러 개의 실행 계획 中에서 최저비용을 가지고 있는 계획을 선택해서 SQL을 실행함 ▶옵티마이저의 필요성 -SQL 문은 어떻게 실행하느..

자격증/SQLD 2023.04.05

SQLD (6)

▶윈도우 함수 (Window Function) -행과 행 간의 관계를 정의하기 위해 제공되는 함수 -윈도우 함수 사용해서 순위, 합계, 평균, 행 위치 ...을 조작 할 수 o ▶윈도우 함수 구조 -ARGUMENTS (인수) -윈도우 함수에 따라 0~N 개의 인수를 설정 -PARTITION BY -전체 집합을 기준에 의해 소그룹으로 나눔 -ORDER BY -어떤 항복에 대해 정렬 -WINDOWING -행 기준의 범위를 정함 -ROWS는 물리적 결과의 행 수 이고, RANGE는 논리적인 값에 의한 범위이다 // WINDOW_FUNCTION : 순위, 집계, 행 순서, 비율 관련 윈도우 함수 ▶WINDOWING -ROWS -부분 집합인 윈도우 크기를 물리적 단위로 행의 집합을 지정 -RANGE -논리적인 주..

자격증/SQLD 2023.04.05

SQLD (5)

*INTERSECT SELECT A.____ FROM A INTERSECT SELECT B.____ FROM B -EQuI 조인을 A, B 테이블 전체 다 읽은 다음에 (TABLE ACCESS FULL) 해시 함수를 사용해서 두 테이블을 연결 -해시 조인을 EQUI 조인만 사용 o -해시 함수는 테이블을 해시 메모리에 적재한 후 해시 함수로써 연결하는 방법 *해시 조인 (Hash Join) -먼저 선행 테이블을 결정하고 선행 테이블에서 주어진 조건 (WHERE)에 해당하는 행을 선택함 -해당 행이 선택되면 조인 키를 기준으로 해시 함수 사용해서 해시 테이블을 Main Memory에 생성하고, 후행 테이블에서 주어진 조건에 만족하는 행을 찾음 -후행 테이블의 조인 키를 사용해서 해시 함수를 적용하여 해당 ..

자격증/SQLD 2023.04.05

SQLD (4)

▶내장형 함수 (BUILT-IN-Function) -형변환 함수, 문자열 함수, 숫자형 함수, 날짜형 함수 →명시적(Explicit) / 암시적 (Implicit) 형변환 -형변환 두 개의 데이터의 데이터 타입이 일치하도록 변환하는 것 -명시적 형변환 -함수를 사용해서 데이터 타입을 일치시킴 -개발자가 SQL을 사용할 때 사용 →INDEX 사용할려면 명시적 형변환 사용 ex) SELECT * FROM EMP WHERE EMPNO = TO_NUMBER('100'); -암시적 형변환 -데이터베스 관리 시스템이 자동으로 함 (내부적으로 형변환 수행) ex) SELECT * FROM EMP WHERE EMPNO = '100'; // 100 : 암시적 형변환 ▶내장형 함수 (BUILT-IN-Function) -형..

자격증/SQLD 2023.04.04

SQLD (3)

▶SQL (Structured Query Language) -관계형 데이터베이스에 대해 데이터 구조를 { 정의, 조작, 제어 .. }를 할 수 o -절차형 언어 -누구나 쉽게 사용 o ▶SQL의 종류 -DDL (Data Definition Language) -구조를 정의하는 언어 -CREATE, ALTER, DROP, RENAME -DML (Data Manipulation Language) -데이터를 입력, 수정, 삭제, 조회 -INSERT, UPDATE, DELETE, SELECT -DCL (Data Control Language) -사용자에게 권한 부여 or 회수 -GRANT, REVOKE, TRUNCATE -TCL (Transaction Control Language) -트랜잭션을 제어하는 명령어 ..

자격증/SQLD 2023.04.04

SQLD (2)

▶정규화 절차 -제 1 정규화 -속성 (Attribute)의 원자성을 확보 -기본 키 (primary)를 설정 -제 2 정규화 -기본키가 2개 ↑ 으로 이루어진 경우, 부분 함수 종속성을 제게 -제 3 정규화 -기본키를 제외한 칼럼 간에 종속성 제거 -이행 함수 종속성 제거 -BCNF -기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면서 분해 -제 4 정규화 -여러 칼럼들이 하나의 칼럼을 종속시키는 경우, 분해하여 다중값 종속성ㅇ르 제거 -제 5 정규화 -조인에 의해 종속성이 발생되는 경우 분해 ▶정규화의 문제점 -데이터 조회시 Join 유발 ∴CPU와 메모리를 ↑ 사용 -중첩 루프로 인해 Join의 부하 유발 ▶반정규화 (De-Normalization) -정규화의 문제점 해결 -데이터..

자격증/SQLD 2023.04.04

SQLD (1)

▶데이터베이스 구조 -데이터는 데이터베이스에 저장 -데이터베이스는 Windows 운영체제에 파일로 저장 ∴데이터베이스를 만드는 과정은 Windows 운영체제의 파일을 만드는 과정 -SQL Server 데이터베이스 파일을 일반적으로 mdf, ndf, ldf 확장자가 o ▶데이터 파일 (mdf, ndf) -기본적으로 mdf 확장자와 Primary Data File 한 개를 반드시 포함 -필요에 따라 Secondary File을 추가o, 보존 데이터 파일 확장자는 ndf -성능을 위해 데이터를 여러 디스크로 분산 o -DB 여유 공간 확보를 위해 운영 중 추가 o ▶로그 파일 (ldf) -ldf 확장자의 1개 or 여러개의 Transaction Log file을 반드시 포함 -데이터 추가, 변경, 삭제 내용이..

자격증/SQLD 2023.03.31

SQLD 요약(5)

▶옵티마이저 실행 게획 확인 DESC PLAN_TABLE; ▶옵티마이저 실행 방법 (2) -비용 기반 옵티마이저 -규칙 기반 옵티마이저 ▶옵티마이저 엔진 (3) -Query Transformer -Estimator -Plan Generator ▶인덱스 생성 CREATE INDEX 인덱스 명 ON 테이블 명 (컬럼이름 정렬) ▶인덱스 스캔 (INDEX SCAN) (3) -인덱스 유일 스캔 (INDEX UNIQUE SCAN) -인덱스 범위 스캔 (INDEX RANGE SCAN) -인덱스 전체 스캔 (INDEX FULL SCAN) ▶옵티마이저 우선순위 (15) ① RowID를 사용한 단일 행인 경우 ② 클러스터 JOIN에 의한 단일 행인 경우 ③ 유일하거나 기본키를 가진 해시 클러스터 키에 의한 단일 행인 경..

자격증/SQLD 2023.03.30

SQLD 요약 (4)

▶등가 조인 (3) -EQUI -INNER JOIN -INTERSECT ▶비등가 조인 -NON-EQUI ▶OUTER JOIN (3) -LEFT OUTER JOIN -RIGHT OUTER JOIN -FULL OUTER JOIN ▶카테시안 곱 발생 -CROSS JOIN ▶계층형 조회 구조 SELECT connect by 키워드 FROM 테이블 명 START WITH 구 CONNECT BY PRIOR 구 ORDER SIBLINGS BY 컬럼; ▶CONNECT BY 키워드 (6) -LEVEL -CONNECT_BY_ROOT -CONNECT_BY_ISLEAF -SYS_CONNECT_BY_PATH -NOCYCLE -CONNECT_BY_ISCYCLE ▶서브쿼리 (subquery) (3) -SELECT (Scala su..

자격증/SQLD 2023.03.30