index

공부/데이터베이스 2021. 6. 2. 23:50
반응형

ex) select ename from emp where empid = 7934;

위 명령을 수행할때

1. 순차적으로 검색한다.

=> 요청이 많을 경우 처리시간이 오래 걸리게 된다.

 

2. 이진 검색 (데이터가 정렬되어 있는 경우)

데이터가 갱신 될때마다 정렬작업을 하여야하므로 비용부담이 크다.

 

3. index 이용 (index = keyword + address)

index는 해당 값의 주소를 가리킨다. 

그리고 index는 항상 sorting된 상태이다.(실제 데이터는 정렬되어 있을수도 있고 아닐수도 있다.)

index가 있는 column의 값을 기준으로 조회하면 빨라진다.

 

대부분의 DBMS는 기본키, 외래키에 대해 자동으로 index를 설정한다.

=> 테이블 생성시 기본키를 생성하면 자동으로 인덱스생성

외래키 컬럼에 대해서도 인덱스가 생김

기본키가 되었단 말은 검색의 기준으로 많이 선택되니 인덱스를 붙이는 것이 속도를 빠르게 할 수 있음

외래키도 테이블과 테이블을 조인하여야되는데, 매치되는 항목을 찾아야하므로 인덱스를 걸어주어 join연산을 빠르게 해줌

기본키 - empno

자기자신참조 - mgr

외래키 - deptno

에 대해 자동으로 인덱스가 생성됨

=> 인덱스가 없는 column을 기준으로 검색시 속도가 느림

따라서 검색 기준이 될만한 column들은 인덱스를 생성하는 것이 좋음

 

만약 모든  column에 index를 생성하면??

인덱스는 항상 정렬된 상태를 유지해야하므로, overhead가 커진다. 따라서 최소한의 index를 유지하는 것이 좋다.

 

 

SQL문으로 index생성하기

create index idx_job on emp (job);
show index on emp;

 

 

728x90
반응형

'공부 > 데이터베이스' 카테고리의 다른 글

관계 대수  (0) 2021.06.03
파이썬 연동 예제  (0) 2021.06.02
데이터 베이스 보안  (0) 2021.06.02
DB 파이썬 연동  (0) 2021.05.18
저장 함수 예제  (0) 2021.05.15
블로그 이미지

아상관없어

,