제1장 액세스 효율의 향상
1. 인덱스(Index)의 활용 = 4
1.1 인덱스의 구조 = 5
1.2 인덱스의 적용원칙 = 6
가. 인덱스 컬럼의 변형(Suppressing) = 8
(1) 외부적(External) 변형 = 8
(2) 내부적 변형 = 13
다. 부정형의 비교 = 16
라. NULL을 사용한 비교 = 18
(1) NULL 컬럼의 적용 = 18
(2) NULL 공포증의 해소 = 21
다. 옵티마이저에 의한 취사 선택 = 24
(1) 순위(Renking)의 차이 = 24
(2) 낮은 처리비용의 선택 = 25
(3) 힌트(Hint)에 의한 선택 = 26
1.3 인덱스의 선정 = 30
가. 인덱스 대상 테이블의 선정 = 30
나. 인덱스 컬럼의 선정 = 31
(1) 분포도와 손익분기점 = 31
(2) 인덱스 머지(Merge) = 34
(3) 결합 인덱스의 특징 = 38
(4) 결합 인덱스의 컬럼순서 결정 방법 = 47
(5) 손익분기점 이하의 분포도를 가진 컬럼의 인덱스 생성 = 49
(6) 손익분기점 이하의 분포도를 가진 컬럼의 인덱스 생성 = 50
다. 인덱스 선정 절차 = 52
(1) 설계단계의 인덱스 선정 = 53
1) 해당 테이블의 액세스 형태 수집 = 53
2) 대상 컬럼의 선정 및 분포도의 조사 = 60
3) 반복 수행되는 액세스 경로의 해결 = 63
4) 클러스터링 검토 = 64
5) 인덱스 컬럼의 조합 및 순서의 결정 = 65
6) 시험생성 및 테스트 = 71
7) 수정이 필요한 애플리케이션 조사 및 수정 = 71
8) 일괄 적용 = 72
(2) 튜닝단계의 인덱스 선정 = 72
1) 해당 테이블의 액세스 형태 수집 = 73
2) 대상 컬럼의 선정 및 분포도의 조사 = 75
3) 반복 수행되는 액세스 경로의 해결 = 81
4) 클러스터링 검토 = 81
5) 인덱스 컬럼의 조합 및 결정 = 81
6) 시험생성 및 테스트 = 81
2. 조인(Join)의 최적화 = 82
2.1 조인효율 향상의 원리 = 83
가. 조인 순서 = 83
나. 조인 성공률 = 86
다. 연결고리 상태 = 89
(1) 연결고리 정상 = 89
(2) 한쪽 연결고리 이상 = 95
(3) 양쪽 연결고리 이상 = 98
2.2 조인의 튜닝(Tuning) = 99
2.3 조인과 반복연결(Loop Query) = 104
가. 전체범위처리방식의 조인 = 104
나. 부분범위처리방식의 조인 = 108
2.4 Nested Loop 조인과 Sort Merge 조인 = 110
가. Nested Loop 조인 = 110
나. Sort Merge 조인 = 113
다. 조인방식의 비교 = 116
3. 클러스터링(Clustering)의 활용 = 121
3.1 클러스터의 구조 및 특징 = 122
가. 단일테이블 클러스터링 = 123
나. 다중테이블 클러스터링 = 126
3.2 클러스터 컬럼의 선정 = 129
가. 클러스터링의 부하 = 129
(1) 입력시의 부하 = 129
(2) 수정시의 부하 = 130
(3) 삭제시의 부하 = 131
나. 클러스터 컬럼의 선정절차 = 134
다. 클러스터링 형태의 판단가준 = 137
(1) 전체 테이블 클러스터링 = 138
(2) 일부 테이블 클러스터링 = 140
(3) 단일 테이블 클러스터링 = 140
라. 클러스터링 테이블의 체인 = 143
마. 클러스터링 사이즈 = 146
바. 클러스터링 생성 예제 = 147
3.3 클러스터 사용을 위한 조치 = 150
4. 부분범위처리(Partial Range Scan) = 152
4.1 부분범위처리의 개념 = 153
4.2 부분범위처리의 적용원칙 = 156
가. 부분범위처리의 간격 = 156
나. 옵티마이져모드에 따른 부분범위처리 = 160
4.3 부분범위 처리의 수행속도 향상원리 = 161
4.4 부분범위처리로의 유도 = 167
가. 인덱스나 클러스터를 이용한 SORT의 대체 = 167
나. 인덱스만 액세스하는 부분범위처리 = 170
다. MAX의 처리 = 172
라. EXISTS를 활용한 부분범위처리 = 176
마. ROWUNM의 활용 = 178
바. SQL의 이원화를 통한 부분범위처리 = 184
5. 다중 처리(Array Processing)의 활용 = 186
5.1 다중처리의 개념 = 187
5.2 유형별 다중처리 방법 = 191
가. SQL*Plus와 SQL*Loader = 191
나. 온라인형 개발 툴 = 193
다. 배치형 개발 툴 = 196
(1) HOST 변수의 선언과 SQL문에서의 사용 = 199
(2) HOST 변수로 추출(SELECT) = 200
(3) INSERT, UPDATE, DELETE의 다중 처리 = 202
(4) 배열 변수의 참조 = 208
(5) 기타 툴의 다중처리 = 209
제2장 응용프로그램의 최적화
1. 응용프로그램 작성시 고려사항 = 215
1.1 절차형 SQL과 저장 프로시저(Stored Procedure)의 활용 = 215
가. 절차형 SQL의 활용 = 215
나. SQL*Forms와 PL / SQL = 222
다. 클라이언트 / 서버 환경에서의 PL / SQL = 223
라. 저장 프로시저의 활용 = 224
1.2 커서의 사용기준 = 228
가. 내부커서 = 228
나. 외부커서 = 230
다. HOLD_ARE SQL의 활용 = 232
라. HOLD_CURSOR의 사용 = 236
1.3 에러의 처리 = 237
가. 에러 정보의 종류 = 237
나. SQLCA의 사용 = 237
다. WHENEVER의 사용 = 239
1.4 데이터타입과 변수타입 = 242
가. CHAR와 VARCHAR 외부 데이터 타입 = 243
나. STRING과 CHARZ 외부 데이터 타입 = 249
다. 데이터 타입 동격화(Datatype Equivalencing)250
라. 기타 데이터 타입 = 252
마. Pro*C 2.0의 새로운 특징 = 253
2. 응용프로그램의 유형별 죄적화 = 256
2.1 온라인 화면 프로그램 = 256
가. 다중페치(Array Fetch)의 활용 = 258
나. 멀티로우의 화면 표시 = 260
다. 유연한 SQL 문장의 구사 = 261
라. 온라인 화면의 트랜잭션 처리 = 262
2.2 배치(Batch)처리 프로그램 = 266
가. OUTER 조인을 이용한 배치처리 = 267
나. 다중처리를 추가한 배치처리 = 272
다. 정렬을 이용한 쓰기작업의 효율화 = 276
라. INSERT가 많은 경우의 배치처리 = 281
마. SQL을 이용한 배치처리 = 284
제3장 데이터 타입 및 길이의 결정
1. 데이터 타입의 선정 절차 = 296
1.1 문자타입, 숫자타입의 결정 = 297
1.2 문자타입의 확정 = 297
1.3 숫자타입의 확정 = 298
1.4 날짜타입의 확정 = 299
2. 데이터 타입의 선정 = 300
2.1 CHAR 타입 = 301
가. CHAR 타입의 특성 = 301
나. CHAR 타입의 활용 = 302
2.2 VARCHAR2의 타입 = 304
가. VARCHAR2의 타입의 특성 = 304
나. VARCHAR2의 타입의 활용 = 305
2.3 문자타입의 비교법칙 = 309
가. 양쪽 모두 CHAR 타입인 경우 = 310
나. 어느 한쪽에 VARCHAR2 타입이 있는 경우 = 310
다. 상수값과 비교 = 312
2.4 NUMBER 타입 = 313
가. NUMBER 타입과 특성 = 314
나. NUMBER 타입의 활용 = 315
2.5 DATA 타입 = 316
가. DATA 타입의 특성 = 316
나. DATA 타입의 활용 = 319
2.6 LONG 타입 = 324
2.7 RAW, LONG RAW, ROWID 타입 = 328
3. 데이터 길이의 결정 = 330
3.1 VARCHAR2 타입의 길이 결정 = 330
3.2 CHAR 타입의 길이 결정 = 330
3.3 NUMBER 타입의 길이 결정 = 331
제4장 시스템 진단과 튜닝
1. MONITOR(시스템 활동 감시) = 337
2. SQL_TRACE(Trace 파일 생성) = 340
3. TKPROF (Trace 파일 출력) = 342
4. EXPLAIN PLAN(실행계획) = 355
5. ANALYZE(통계정보 생성) = 362
6. UTLBSTAT.sql. UTLESTAT.sql = 365
6.1 메무리 버퍼캐쉬 적중율(Buffer Hit Ratio)튜닝 = 368
6.2 버퍼캐쉬(Buffer Cache)의 튜닝 = 369
6.3 DBWR의 튜닝 = 375
6.4 액세스 방법의 튜닝 = 377
6.5 I/O 분포의 튜닝 = 378
6.6 내부적인 래취의 경합 감소 = 384
6.7 ROLLBACK에 관련된 처리의 속도 = 389
7. 기타 스크립트 = 392
7.1 CATBLOCK.sql과 UTLOCKT.sql = 392
7.2 DBMSLOCK.sql(LOCK요구, 변경, 해소) = 394
8. 사용자 스크립트 = 395
8.1 Database Extend 확인 = 395
8.2 테이블 크기 조회 = 397
가. 테이블스페이스 조회 = 397
나. 테이블 스페이스 조각의 확인 = 398
8.3 적중율(Hit Ratio)계산 = 399
9. SQL Area의 튜닝 = 401
10. 병렬처리의 튜닝 = 414
10.1 병렬 인덱스 생성 = 414
10.2 병렬 조회 및 병럴복구 = 415
10.3 병렬 데이터 로딩(Loading) = 418
제5장 뷰의 특징과 활용41
1. 뷰의 실체 = 424
2. 뷰의 특징 = 428
3. 뷰의 실행계획 수립 원리 = 430
4. 뷰의 활용 = 435
가. 보안 관리를 위한 뷰 = 436
나. 사용 편의를 위한 뷰 = 441
다. 수행속도 향상을 위한 뷰 = 446
라. 융통성 향상을 위한 뷰 = 453
마. SQL 기능 향상을 위한 뷰 = 457
바. 임시 작업을 위한 뷰 = 465
5. 뷰 파싱타임의 절약 = 467
제6장 데이터 모델링
1. 기본 개념 데이터 모델링 = 472
1.1 엔터티(Entity) = 472
1.2 관계(Relationship) = 473
가. M:1 관계 = 474
나. M:M 관계 = 474
다. 1:1 관계 = 475
라. 관계형 메트릭스 = 476
1.3 속성(Attribute) = 478
1.4 식별자(Unique Identifier) = 480
2. 상세 개념 데이터모델 = 482
2.1 정규화(Normalization)작업 = 483
가. 제1정규형 = 483
나. 제2정규형 = 484
다. 제3정규형 = 485
2.2 M:M 관계의 해소 = 486
2.3 엔터티의 재구성 = 488
가. 역할의 통합 = 488
나. 계층형 데이터 모델 = 489
다. 순환관계 데이터 모델 = 491
라. BOM 데이터 모델 = 492
마. 서브타입 데이터 모델 = 494
바. 아크관계 데이터 모델 = 495
사. 시계열 데이터 모델 = 496
아. 복잡한 데이터 모델 = 498
3. 데이터베이스 설계 = 500
3.1 엔터티를 테이블로 = 500
3.2 속성을 컬럼으로 = 500
3.3 식별자를 기본키로 = 501
3.4 관계를 외부키로 = 503
가. M:1 관계 = 503
나. 1:1 관계 = 504
다. 순환관계 = 504
3.5 아크(ARC) 관계의 처리 = 506
3.6 서브타입 처리 = 509
가. 하나의 테이블로 통합 = 510
나. 서브타입별로 분리 = 511
다. 아크관계로 분리 = 513
3.7 테이블 정규화 작업 = 515
3.8 추가적인 작업 = 515
찾아보기 = 519