1. 추가된 인덱스가 미치는 영향
l SELECT *
FROM TAB1
WHERE A = ‘10’
AND B = ‘941005’
AND C = ‘123’
- IDX1 : AB , IDX2 : C 가 있다면, 결합인덱스인 IDX1를 탄다.
여기서, IDX1에 ABD로 변경하면 다른 부분에 영향을 미침
l 분포도 차이가 심한 경우
- 예를 들어, corp_id의 값이 삼성 SDS로 90%로 이루어져 있다면,
삼성 SDS는 값을 null로 가져가라. 그리고 아래의 쿼리로 변경.
SELECT nvl(corp_id , ‘100’) corp_id
FROM XX
WHERE :V1 = ‘100’
AND CORP_ID is null
UNION ALL
SELECT *
FROM XX
WHERE :V1 <> ‘100’
AND CORP_ID = :V1
è 이런식으로 구성을 하면 인덱스 사이즈가 확 줄어버리기 때문에 성능이 좋아짐
2. 비트맵 인덱스
l
l 특징
i. 분포도가 낮은 컬럼에 유효
ii. 전통적인 b-tree 인덱스의 단점을 해소 (or, not, null 등)
iii. I/O이 획기적인 감소
iv. 블락 레벨 Locking (Row 레벨이 아님)
v. DW에 적당함.
3. 조인 수행속도 결정요소
l 적은 건부터 드라이브 되는 것이 성능이 좋다. (조인의 순서 중요)
l 인덱스
i. 조인 컬럼이 둘다 인덱스가 없을 경우에 두개의 테이블 다 full table scan하고 sort merge 조인을 한다.
ii. 한 테이블의 컬럼만 인덱스가 있을 경우에는 인덱스가 없는 쪽이 먼저 드라이빙 된다.
'cd database > 대용량데이터베이스' 카테고리의 다른 글
대용량 DB 12강 (해쉬조인, 리커시브 SQL) (0) | 2014.05.29 |
---|---|
대용량 DB 11강 (Join) (0) | 2014.05.23 |
대용량 DB 9강 정리 (인덱스 선정) (0) | 2014.05.14 |
대용량 DB 7강 정리 (index의 사용) (0) | 2014.05.03 |
대용량 DB 5강 정리(lock) (0) | 2014.04.22 |