서적 명 : SQL 튜닝의 시작1 SQL의 이해와 효율적인 작성법
책소개
SQL의 이해와 효율적인 작성법『SQL 튜닝의 시작』. SQL 튜닝의 기초개념부터 응용까지 설명한 책이다. SQL 튜닝이란 튜닝 대상이 되는 SQL을 이해하고, SQL이 가진 정보를 치밀하게 분석하여 얻어지는 결과일 뿐임을 인식하고, 차근차근 배워나갈 수 있도록 도왔다. 서브쿼리와 성능 문제 이해하기, 스칼라 서브쿼리의 이해와 효율적인 SQL 작성하기, WITH절 이해와 효율적인 SQL 작성하기 등의 내용으로 구성했다.
[인터넷 교보문고 제공]
목차
CHAPTER 01
SQL 튜닝의 시작은?1
CHAPTER 02
서브쿼리와 성능 문제 이해하기7
●서브쿼리에 대한 기본 내용 이해하기 7
-서브쿼리란7
-서브쿼리의 사용 패턴에 대해 알아보자8
●서브쿼리 동작방식 이해하기 12
-FILTER 동작방식12
-조인 동작방식19
-서브쿼리 동작방식을 제어하는 힌트들27
●서브쿼리를 활용한 SQL 성능개선38
-비효율적인 MINUS 대신 NOT EXISTS를 사용하자38
-조인 대신 서브쿼리를 활용하자45
-WHERE절의 서브쿼리를 조인으로 변경하자48
CHAPTER 03
스칼라 서브쿼리의 이해와 효율적인 SQL 작성하기55
●스칼라 서브쿼리의 특성 이해하기55
-최대 결과 건수만큼 반복적으로 수행된다55
-추출되는 데이터는 항상 1건만 유효하다56
-데이터가 추출되지 않아도 된다59
●스칼라 서브쿼리와 조인의 이해 및 활용하기60
-스칼라 서브쿼리는 최종 결과 만큼 수행하자60
-스칼라 서브쿼리와 조인의 관계로 보는 SQL 성능 문제69
CHAPTER 04
WITH절 이해와 효율적인 SQL 작성하기81
●WITH절 동작방식 이해하기82
-MATERIALIZE 동작방식82
-INLINE VIEW 동작방식86
●SQL 성능 개선을 위한 WITH절 활용하기89
-데이터 중복 액세스 제거하기89
-VIEW PREDICATING 성능 문제 제거하기90
-계층 쿼리의 데이터 처리 최소화 하기95
●WITH절을 사용할 때 주의해야 할 점은?98
-동시성이 높은 경우 MATERIALIZE 동작방식은 피하자 98
-추출 건수가 많은 경우 WITH절은 피하자98
-WITH절 선언 부분은 SQL의 가장 앞에 위치시키자99
-WITH절에 동작방식 힌트를 추가하자100
CHAPTER 05
MERGE 구문 이해와 효율적인 SQL 작성하기103
●MERGE 구문의 구성요소 알기107
-INTO 절107
-USING 절 108
-ON 절108
●MERGE 구문으로 처리되는 데이터 이해하기109
-MERGE_T1 테이블에 몇 건 UPDATE 될까?109
-MERGE_T1 테이블에 몇 건 DELETE 될까?111
-MERGE_T1 테이블에 몇 건 INSERT 될까?112
●MERGE 구문 작성 시 발생할 수 있는 에러와 해결방법 알아보기113
-TARGET TABLE과 SOURCE TABLE의 조인은 1:1이어야 한다114
-UPDATE 컬럼은 ON절에 사용할 수 없다116
●MERGE 구문은 다양한 형태의 DML을 지원한다117
●MERGE 구문을 성능 문제에 활용하자119
CHAPTER 06
FUNCTION 수행과 SQL 성능 문제 이해하기123
●FUNCTION 기본내용들 이해하기123
-USER DEFINED FUNCTION의 의미123
-USER DEFINED FUNCTION의 특징과 장점123
-USER DEFINED FUNCTION의 종류와 사용법 125
●FUNCTION 동작방식 이해하기133
-SELECT절에 사용하는 FUNCTION의 동작방식 133
-WHERE절에 사용하는 FUNCTION의 동작방식140
●FUNCTION 수행과 SQL 성능 문제152
-FUNCTION은 최종 추출 결과만큼만 수행하자152
-FUNCTION이 스칼라 서브쿼리에서 수행하도록 변경하자 158
-FUNCTION을 호출하는 값의 패턴을 분석하자163
-SELECT절에 사용된 FUNCTION을 조인으로 변경하자166
-WHERE절의 FUNCTION을 SELECT절로 옮기자168
CHAPTER 07
DECODE & CASE WHEN 이해 및 조건 문 처리하기181
●DECODE181
-구문181
-구문에 대한 상세 설명182
-DECODE와 성능 이슈185
●CASE206
-구문207
-구문에 대한 상세 설명207
-단순 CASE와 탐색 CASE 사용법208
-예제를 통한 CASE의 사용법 209
CHAPTER 08
NULL 처리 구문 이해와 효율적인 SQL 작성하기 215
●NULL 처리 함수 이해하기220
-NVL ()220
-NVL2 ()222
●NVL 활용하기224
-실행계획 분리하기 224
-IS NULL 조회 개선하기227
●그룹 함수(COUNT, SUM, MAX, MIN)와 NVL 처리228
●NULLABLE 컬럼 사용에 의한 비효율 COUNT 함수 처리233
●IS NULL 조회에 대한 개선방법 찾기238
-NVL 처리와 FUNCTION BASED INDEX 생성 241
-컬럼 속성 변경(DEFAULT 설정)과 NULL 데이터 업데이트242
-컬럼 추가 및 인덱스 생성 후 WHERE절 변경 243
●IS NOT NULL 조회에 대한 개선방법 찾기245
-다양한 IS NOT NULL 처리와 SQL 성능 문제245
-조인 처리 시 IS NOT NULL 활용하기249
●' '(BLANK)와 NULL 데이터 처리하기 251
-' '(BLANK) 데이터가 NULL일까?251
-TRIM & NVL 처리 252
-' '와 NULL 데이터 처리 관련 성능 문제252
CHAPTER 09
날짜 데이터 관련 함수 조회하기257
●데이터 타입 간 날짜 데이터 제어하기257
-DATE 조회 - 에러가 발생하는 경우257
-DATE 조회 - 정상 조회 되는 경우258
-잘못된 날짜 연산들259
●일자, 시간, 분, 초 계산하기260
●날짜와 관련된 유용한 함수들263
-TO_DATE & TO_TIMESTAMP & TO_CHAR(DATETIME) 263
-ADD_MONTHS269
-MONTHS_BETWEEN270
-LAST_DAY271
-NEXT_DAY271
-ROUND273
-TRUNC274
-EXTRACT 275
CHAPTER 10
임의의 데이터를 활용한 효율적인 SQL 작성하기 281
●CONNECT BY LEVEL로 데이터 추출하기281
-임의의 숫자 만들기281
-임의의 날짜 만들기282
●CONNECT BY LEVEL 활용하기283
-데이터 변환 시 CONNECT BY LEVEL 사용하기283
-데이터 중복 조회 제거하기 285
-인덱스 처리 일량이 많은 경우288
CHAPTER 11
컬럼 변형에 의한 SQL 성능 문제 이해하기303
●조회 컬럼과 변수의 데이터 타입을 맞추자303
●컬럼에 불필요한 ORACLE 제공함수를 사용하지 말자310
-부적절하게 FUNCTION을 컬럼에 사용하는 경우310
-컬럼 변형으로 인해 인덱스의 MIN/MAX를 활용하지 못하는 경우312
-파티션 키 컬럼 변형은 모든 파티션을읽는다315
CHAPTER 12
조회 패턴에 맞게 SQL 실행계획 분기하기323
●많은 조회 패턴을 가진 SQL은 하나의 SQL이 아니다323
●SQL의 조회 패턴 별 실행계획을 분기하자326
-여러 조건을 가진 SQL의 실행계획 분기하기326
-변수 값의 범위에 따라 SQL을 분리하자330
CHAPTER 13
ROWNUM 이해와 관련 SQL 성능 문제 이해하기343
●ROWNUM 데이터를 먼저 추출한 이후 조회하자343
●ORDER BY와 ROWNUM을 같은 위치에 두지 말자345
●ROWNUM=1은 ROWNUM<=1로 사용하자347
●INDEX_DESC와 ROWNUM<=1을 함께 사용하지 말자349
●ROWNUM<=1은 항상 빠르지 않다353
●인라인 뷰에 ROWNUM을 추가할 때는 주의하자357
CHAPTER 14
화면 PAGINATION 처리할 때 이것은 지키자363
●ROWNUM 처리를 잘하자365
●인덱스 컬럼 순서와 ORDER BY절 순서를 맞추자371
●PLAN에 나타나는 오퍼레이션 중 COUNT에 속지 말자 372
●NESTED LOOPS JOIN을 사용하자374
NESTED LOOPS JOIN에 비효율이 많지 않은 경우 효과적이다374
기본적인 형태의 PAGINATION을 익히자375
INDEX391
[인터넷 교보문고 제공]
'ORACLE > Book' 카테고리의 다른 글
2018년 굿어스데이터 기술백서 (2) | 2019.01.08 |
---|---|
SQL 튜닝의 시작2 SQL 튜닝 방법론 (0) | 2018.12.04 |
전문가를 위한 오라클 엑사데이터 (0) | 2018.12.04 |
전문가를 위한 오라클 데이터베이스 아키텍처 (0) | 2018.12.04 |
프로오라클 데이터베이스 11g RAC 리눅스 (0) | 2018.12.04 |