인덱스의 정의
인덱스(Index)의 정의
데이터 베이스에서 인덱스란 데이터를 빠르게 찾을 수 있는 하나의 장치입니다.
원하는 레코드를 찾으려고 할 때 인덱스가 없으면 모든 레코드를 하나씩 확인해 봐야 합니다.
이는 Full Scan 방식으로 인덱스를 사용하는 방법에 비해 느리다는 단점이 있습니다.
인덱스를 좀 더 구체적으로 설명하자면 테이블의 한 컬럼을 복사하여 정렬한 것입니다.
이렇게 복사해서 만든 인덱스는 데이터가 들어가 있는 것이 아니라 원래 테이블에서 해당 레코드의 주소가 들어있습니다. 원하는 레코드를 찾는 방법은 인덱스에서 이 주소를 찾는 개념입니다.
즉 인덱스를 사용하면 빠른 속도로 원하는 레코드에 접근할 수 있고 이로인해 서버의 부하를 줄일 수 있습니다.
하지만 장점만 있는 것은 아닙니다.
인덱스를 생성하면 DB의 저장공간을 차지하게 됩니다.
또한 테이블에 새로운 데이터가 생성되거나 삭제될 때 인덱스에도 추가적인 연산을 해주어야 합니다.
이러한 특징으로 인덱스는 데이터의 변경이 잦은 테이블보단 검색을 많이하는 테이블, 규모가 커서 풀스캔 방식은 시간이 오래 걸리는 테이블에서 강점을 발휘할 수 있습니다.
여기서 위의 방식처럼 한 컬럼을 복사하여 만든 인덱스를 넌클러스터드 인덱스라고 부릅니다.
하지만 위와 같이 id가 있는 테이블은 이미 정렬이 되어 있기에 인덱스를 만들 필요가 없습니다.
이처럼 id와 같은 컬럼을 클러스터드 인덱스라고 합니다.
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.