cd database/대용량데이터베이스

대용량 DB 10강 (인덱스 , 조인)

성덕 2014. 5. 16. 23:35

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.         한 테이블의 컬럼만 인덱스가 있을 경우에는 인덱스가 없는 쪽이 먼저 드라이빙 된다.