본문 바로가기

Web Development/Database

'index를 탄다'의 의미

728x90

Index란?

인덱스란 지정한 컬럼들 기준으로 일종의 목차를 생성하는 것으로서, 데이터 검색 속도 향상을 위해 사용되는 기술이다.

 

인덱스를 사용하면 좋은 경우

1.테이블 행의 갯수가 많은 경우

2.인덱스를 적용한 컬럼이 where절에서 많이 사용되는 경우

3.검색 결과가 원본 테이블 데이터에 비해 적을 경우(2-4%)

4.해당 컬럼이 null을 포함하는 경우

 

인덱스 사용하면 좋지 않은 경우

1.테이블의 행의 갯수가 적음

2.검색결과가 원본테이블 데이터의 많은 비중

3.원본 테이블의 insert, delete update가 빈번(성능이 떨어진다. 인덱스를 재성생해야하기 때문)

 

'Index를 탄다'의 의미

학창시절 생활기록부 파일철이 있다고 했을때 맨 앞장에 간략히 목차란게 있으면 찾기 훨씬 수월할 것이다.

  • 인덱스를 태운다 : 목차를 보고 찾는다
  • 인덱스를 안탄다 : 목차를 안보고 1페이지부터 500페이지 까지 한장한장 확인한다

인덱스가 index (name)  으로 생성되었을 경우,
select ~ from table where name = '홍길동';   (탐)
select ~ from table where id = 'hong0909';    (안탐)

 

인덱스를 타는지 안타는지 확인하는 방법

1. DB 상용툴(ex: orange , sql developer dbeaver)에서 확인 하는 법 

sql 작성 후 실행 계획(Explain plan) 탭에서 확인가능하다

 

2.sql 을 통해 확인 하는 법

EXPLAIN plan FOR select * from where 조건~~;
SELECT * FROM TABLE(dbms_xplan.display);



반응형