6
Yu Gil Sang eTribe STG Index Tip

Index에 관한 tip - 유길상

Embed Size (px)

DESCRIPTION

친숙한 index에 대해 간과하기 쉬운 점들

Citation preview

Page 1: Index에 관한 tip - 유길상

Yu Gil SangeTribe STG

Index Tip

Page 2: Index에 관한 tip - 유길상

Index 란?

• DATABASE에서데이터를검색할때검색되는데이터의수를줄여성능을높이기위해지정하는식별자, 접근과정렬속도를높이기위해특정열에지정한키

Index가없을경우 table의모든열을 full scan하여데이터를검색하지만 index가있을경우 index table에서해당색인을찾아검색하기때문에속도를높여주는결과를얻을수있습니다.

Page 3: Index에 관한 tip - 유길상

Index의생성에관하여…Index가검색성능을높여주지만그렇다고하여모든 table에 index를생성하는것은옳지않

습니다. 이유는다음과같습니다.

일반적으로테이블에인덱스설정하면우리는인식하지못하지만 key값과 rowid값을가지고있는 index테이블이생성되게됩니다. 이때 Index가생성되어있는테이블에입력/수정/삭제가일어날경우 database는 index의관리를위해

1. 일단 data에아무도접근하지못하도록막습니다.

2. data insert 시새로운 index의정렬을위해 index table을반으로나눠 index를올바른위치에끼워넣는작업을합니다.(index split)

3. Data의 delete 시본 table에서는 data가삭제되지만 index table에서는단지 ‘사용안함’상태로변경되게됩니다. 입력삭제가잦은 table에서는원본 table에서 row가 100건이라도 index table에서는 100000건이쌓일수도있는것이지요.

4. Update에는위상황이둘다벌어지게됩니다. Update라는것이사실 data를삭제하고그자리에새로운데이터가들어오는개념이기때문입니다.

Page 4: Index에 관한 tip - 유길상

Index의생성시고려사항

1. 자주조회되는 column을인덱스로선택

2. 참조제약조건이있는 column에생성

3. 검색결과가전체 data량의대략 15% 이하로예상되는경우, 15% 이상의경우 full scan이더유리할수있다고합니다. (보통 3% ~ 4%정도에유리)

4. 몇천건미만의 data가쌓이는 table에는 index를생성하지않아도무방합니다.

5. 테이블간 join에사용된 column을 index로선택하면 join성능이향상됩니다.

6. Insert, update, delete가아주빈번히일어나는 table에는 index 생성을다시한번생각해보시기바랍니다.

Page 5: Index에 관한 tip - 유길상

Index가작동하지않는경우검색시 index를타지않는경우를면접볼때 dba께서질문하시는경우가종종있더군요. 다음의경우에는 index가있다고하더라도검색에활용되지않습니다.

1. Index가잡혀있는 column을조건절에서가공하는경우Ex. SELECT * FROM 업체 WHERE SUBSTR(업체명, 1, 2) = '대한';

2. 부정형비교를사용하는경우Ex. SELECT * FROM 고객 WHERE 직업 <> '학생';

3. is not null 조건을사용한경우 (이또한부정형비교에해당함)Ex. SELECT * FROM 사원 WHERE 부서코드 IS NOT NULL;

Page 6: Index에 관한 tip - 유길상

마치며…평소 Index를자주사용하지만무심코지나치기쉬운부분만간단히정리하였습니다. Index의방식도여러가지가있으며기존 index를효율적으로사용하는방법에도여러가지가있습니다.

이미자세히아시는분들도많겠지만더자세한내용이궁금하신분들을위해아래출처를첨부합니다.

1. Index의정의및활용 : http://blog.naver.com/bboy12/10186914957

2. 부정형의비교 : http://javaf.tistory.com/83

3. 오라클의 index 100% 활용 : http://kalipso.tistory.com/82

4. 오라클성능고도화원리와해법 II:인덱스기본원리 : http://sysdba.co.kr/wiki/index.php/%EC%98%A4%EB%9D%BC%ED%81%B4_%EC%84%B1%EB%8A%A5_%EA%B3%A0%EB%8F%84%ED%99%94_%EC%9B%90%EB%A6%AC%EC%99%80_%ED%95%B4%EB%B2%95_II:%EC%9D%B8%EB%8D%B1%EC%8A%A4_%EA%B8%B0%EB%B3%B8_%EC%9B%90%EB%A6%AC

5. Index의양면성 : http://majesty76.tistory.com/55

6. Index 안타는경우 : http://blog.naver.com/0haruki/150047426341