글

라벨이 인덱스인 게시물 표시

데이터베이스 - 인덱스 객체

이미지
인덱스 데이터베이스에 데이터를 집어 넣으면 시간 순서대로 일단 정렬이 된다. 따라서 우리가 데이터를 찾을 때 다소 불편하다. 이를 극복하기 위해서 인덱스를 사용한다. 즉 인덱스는 검색 속도를 높이기 위해서 사용하는 스키마 객체이다. 인덱스를 사용하지 않을 때는 모든 데이터를 읽어 검색 조건에 따라 데이터를 선별한다. 하지만 인덱스를 사용하면 조건에 맞는 데이터만을 직접 접근하기 때문에 검색 효율을 높일 수 있다. 인덱스는 오라클 서버에 의해 자동 생성되기도 하지만, 사용자가 직접 생성할 수도 있다. 테이블에서 제약 조건으로 primary key 또는 unique를 생성할 경우 자동 생산된다. 그리고 이 경우 인덱스의 이름은 제약조건의 이름과 동일하다. foreign key에 대해서는 자동생성되지 않지만 인덱스가 존재하면 조인할 때 검색속도가 향상되기 때문에 반드시 생성하도록 하자. 인덱스 생성 인덱스를 만들 때는 정렬 기법이 중요하다. 우리가 이미 알고 있는 오름차순, 내림차순은 데이터 간 접근속도 차이가 많이 난다. 하지만 검색 속도를 모든 데이터에 대해 가능하면 비슷한 속도로 접근할 수 있도록 해야한다. 이를 위해서 중간값 정렬이라는 것을 사용한다. 일종의 이진 트리 형식으로 중간값보다 큰 집합과 작은 집합으로 나누고, 또 나눈 데이터에서 이 작업을 반복한다. 이를 “balanced tree” 기법이라고도 부른다. 인덱스를 생성하면 인덱스는 기존 테이블로부터 데이터를 받아 Balanced tree에 넣는다. 우리가 데이터를 정렬하기 위해서 이름순, sal순 등으로 정렬할 때마다 실제 데이터를 뒤섞어놓는 것보다 필요한 칼럼을 뽑아서 트리에 넣는 것이 효율적이고 안전하기 때문이다. 테이블 스캔과 인덱스 스캔 보통 테이블에서 데이터를 찾는 것을 테이블 스캔, 인덱스에서 데이터를 찾는 것을 인덱스 스캔이라고 한다. 인덱스를 생성할 칼럼 선정 넓은 범위를 갖는 칼럼: 인덱스는 검색용이기 때문에 범위...