SQL 튜닝의 시작 : SQL의 이해와 효율적인 작성법
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
작가정보
저자 박성호는 POSCO SM (튜닝그룹) 파트에서 ERP, MES 튜닝 업무를 수행하였고, ㈜엑셈에서 기술지원 및 컨설턴트로 일하고 있다. SK하이닉스, 하나은행, LG U+, SKT, 삼성전자 및 다수의 고객사 프로젝트에서 DB 튜닝 업무를 수행하였고, 현재 ㈜엑셈에서 DB컨설팅팀 수석 컨설턴트로 재직 중이다.
저자(글) 오수영
저자 오수영은 현재 ㈜엑셈에서 DB컨설팅팀 책임 컨설턴트로 재직 중이며, 자사의 DBMS 성능관리 툴인 Maxgauge를 활용하여 기술지원 및 컨설턴트로 일하고 있다. T-Store, 우체국금융, 우체국 택배, 한화손해보험, 국방부, 한진 택배, KED 등에서 DBMS 성능 진단 및 개선 업무를 진행하였다.
목차
- 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
●DECODE 181
-구문 181
-구문에 대한 상세 설명 182
-DECODE와 성능 이슈 185
●CASE 206
-구문 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_MONTHS 269
-MONTHS_BETWEEN 270
-LAST_DAY 271
-NEXT_DAY 271
-ROUND 273
-TRUNC 274
-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
Index 391
출판사 서평
SQL 튜닝의 마술~?
-결코 어렵지 않다. 단지 시작이 힘들 뿐~!
SQL 튜닝은 어떻게 시작해야 할까요~?
-SQL의 이해와 SQL의 효율적인 작성부터 시작하자~!
SQL 튜닝은 “SQL + 튜닝” 이다.
-SQL 튜닝이란 튜닝 대상이 되는 SQL을 이해하고, SQL이 가진 정보
(테이블/인덱스/칼럼의 정보 및 업무적 성격 등)를 치밀하게 분석하여
얻어지는 결과일 뿐이다.
기본정보
ISBN | 9788996817932 |
---|---|
발행(출시)일자 | 2013년 01월 25일 |
쪽수 | 391쪽 |
크기 |
185 * 256
* 30
mm
/ 1020 g
|
총권수 | 1권 |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립