index는 말그대로 index입니다.
두꺼운책에서 어떤 내용을 찾을에 맨앞에 있는 index를 참고해야
쉽게 빨리 찾을수 있죠.
그런나 전체 용량이 1,2 page밖에 안되는책을 index를 찾는건
더 느리겠죠? 차라히 full scan이 빠를겁니다.
DB도 맞찬가지입니다.
보통 1000건 정도 기준으로 그 이상껀수는 index로 찾는것이 빠릅니다.
그리고 남자/여자 구분되는 컬럼에 index를 만들면 비효율적이겠죠?
Yes/No 도 맞찬가지고요.. 중복이 많은 컬럼은 index를 피하시는게 좋습니다.
where 조건에 걸리는 컬럼, order by에 사용되는 컬럼에 index 만드시는게
좋습니다.
index도 단일 index, composite index(여러 컬럼 묶어서) 가 있고
select .. from .. where a=1 and b=1 and c=1
이라면 index a, index b, index c 만드는것 보단
index(a,b,c)가 더 효율적이죠.
그렇다고 table에 index를 너무 많이 만들면 insert/update/delete 하는데
오버헤드가 생기니 속도가 떨어집니다.
보통 한 table 당 6개정도의 index가 알맞습니다.
제가 답변한 기준DB는 informix에 맞추어 답변을 했지만
타 DBMS도 별차이 없을거라고 생각됩니다.
참고하시길 바랍니다.
-- 김훈 님이 쓰신 글:
>> 안녕하세요.. 다름이 아니라..
>> 테이블을 만들때.. 특별히 인덱스를 만들 규칙 같은게 있나요?
>> 예를 들면 프라이머리 키로 만든 컬럼은 자동으로 unique index 가
>> 만들어 진다고 하는데..
>>
>> 그 외에.. 어떤 경우에 인덱스를 만들어야 하는지요?
>> where 절에서 조건으로 많이 사용되는 컬럼을 만들어야 하는지..
>>
>> 인덱스를 만드는 거에 대한 어떤 배경 지식 같은게 있음 알려 주세요..
>> 물론 인덱스를 만든 다는게 여러 상황에 따라서 다르겠지만요..
>>
>> 그럼 답변 기다리겠습니다.
|