본문 바로가기

DB/SQLD & SQLP17

[SQLP] 4장. 인덱스와 조인 - 인덱스 튜닝 1. 인덱스 튜닝 기초가. 범위 스캔이 불가능하거나 인덱스 사용이 아예 불가능한 경우아래와 같이 인덱스 선두 칼럼을 조건절에서 가공하면 정상적으로 인덱스를 사용할 수 없다.select * from 업체 where substr(업체명, 1, 2) = ‘대한’나. 인덱스 칼럼의 가공인덱스 칼럼을 가공하면 정상적인 Index Range Scan이 불가능해진다.SELECT * FROM 업체 WHERE SUBSTR(업체명,1,2) = '대한' 위와 같은 SQL은 아래처럼 바꿔야 인덱스를 탈 수 있다.SELECT * FROM 업체 WHERE 업체명 LIKE '대한%' 다. 묵시적 형변환인덱스 칼럼을 사용자가 명시적으로 가공하지 않더라도 조건절에서 비교되는 두 값의 데이터 타입이 다르면 내부적으로 형변환이 일어난다... 2019. 3. 19.
[SQLP] 4장. 인덱스와 조인 - 인덱스 기본 원리 1. 인덱스 구조원하는 데이터를 빨리 찾도록 돕는 목적인덱스 깊이(Height)루트에서 리프 블록까지의 거리가. 인덱스 기본루트와 브랜치 블록 : 각 하위 노드들의 데이터 값 범위를 나타내는 키 값과 그 키 값에 해당하는 블록을 찾는 데 필요한 주소 정보를 가짐리프 블록 : 인덱스 키 값과 테이블 레코드를 찾아가는데 필요한 주소 정보(Row Id)를 가짐키값이 같을 때는 주소정보 (Row Id)순으로 정렬됨인덱스 구성 칼럼 중 하나라도 null 값이 아닌 레코드는 인덱스에 저장나. 인덱스 탐색수평적 탐색 : 리프 블록에 저장된 레코드 끼리 연결된 순서에 따라 수평으로 스캔함2. 다양한 인덱스 스캔 방식가. Index Range Scan루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한.. 2019. 3. 18.
[SQLP] 3장. 옵티마이저 원리 - 쿼리변환 쿼리 변환1. 쿼리변환쿼리 변환(Query Transformation)은, 옵티마이저가 SQL을 분석해 의미적으로 동일하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말함2. 서브쿼리 Unnesting중첩된 서브쿼리(Nested Subquery)를 풀어내는 것을 말함서브쿼리를 메인쿼리와 같은 레벨로 풀어낸다면 다양한 액세스 경로와 조인 메소드를 평가할 수 있음3. 뷰 Merging사람의 눈으로 볼 때는 쿼리를 블록화하는 것이 더 읽기 편할지 모르지만 최적화를 수행하는 옵티마이저의 시각에서는 더 불편함의 뷰 쿼리 블록은 액세스 쿼리 블록(뷰를 참조하는 쿼리 블록)과의 머지(merge) 과정을 거쳐 와 같은 형태로 변환되는데, 이를 ‘뷰 Merging’이라고 함select * from (select.. 2019. 3. 17.
[SQLP] 3장. 옵티마이저 원리 - 옵티마이저 1. 옵티마이저 소개가. 옵티마이저란?SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해 주는 DBMS 핵심엔진사용자가 던진 쿼리수행을 위해, 후보군이 될만한 실행계획을 찾는다.딕셔너리에 미리 수집해 놓은 오브젝트 통계정보를 이용해 예상비용을 산정한다.각 실행계획을 비교해서 최저비용을 갖는 하나를 선택한다.나. 옵티마이저 종류1) 규칙기반 옵티마이저Rule-Based Optimizer (RBO). 다른 말로 ‘휴리스틱 옵티마이저’경로별 우선순위로 규칙산정인덱스 구조, 연산자, 조건절 형태가 순위를 결정짓는 주요인2) 비용기반 옵티마이저Cost-Based Optimizer (CBO)비용이란 쿼리를 수행하는데 소요되는 일량 또는 시간레코드 개수, 블록 개수, 평균 행 길이, 칼럼 값의 수, 칼.. 2019. 3. 14.