INDEX 과연 타면 빠른가?
에서 인용..(전체 글을 보시려면 위의 링크 클릭!)
결과를 보자 약 15132건의 테이블을 ACCESS하는데 10%이상이 되는 경우는 FTS이 더빠르고 10%이하인 경우는 INDEX를 타는 경우가 더 빠르다.
10% 미만일때는 INDEX를 타고 10%가 넘으면 인덱스를 안타게 할수 있는가?
결론적으로 가능하다.
중략..
그렇나 이렇게 프로그램을 한다면 프로그램이 힘들어 질것이다. 따라서 현재 Optimizer들은 실제 값에 따라서 FTS이 유리한지 아니면 INDEX SCAN이 유지한지 값을 보고 PLAN이 바뀌도록 되어있다. 물론 이를 위해서는 컬럼에 대한 분포도 정보를 DB가 가지고 있어야 한다. 이는 ANALYZER를 통해서 DB가 취득하게 된다.
중략...
어디까지나 Application 사용의 관점에서 효율적인 것을 찾는 것이 중요하다.
인덱스를 사용하여 손해보는 경우는 아래와 같다.
- 같은 값이 많은 컬럼
- INDEX를 타면 10%이상 선택하는 경우
- 예) 남녀성별등..
- 조회보다 DML의 부담이 큰 경우
- 이익시간 < 비용시간 경우
- 그러나 이때도 사용환경을 고려하여 인덱스를 생성할 수 있다.
- 데이터가 적은 테이블
- 일반적으로 db_file_multiblock_read_count보다 적은 수의 BLOCK을 가진테이블은 INDEX를 타지 않는 것이 빠르다.
- 그러나 integrity를 위해서 PK와 FK는 달아야 한다.
댓글을 달아 주세요
학교다닐때 가끔 종로에서 오랜만에 고향친구들을 만날때가 있었어요. 매운숨을 쉬면서요.... 같이 소주잔 기울일때와는 또다른 반가움이 있었죠. 어쩌면 종로나 광화문에서 우연히 만날일이 생길지도 모르겠네요. - -
그 반가움을 가볍게 추억할 날이 빨리 왔으면 좋겠고...