Skip to content

Latest commit

 

History

History
54 lines (32 loc) · 1.79 KB

File metadata and controls

54 lines (32 loc) · 1.79 KB

인덱스 (index)

: 전체 내용 중에서 특정한 부분을 바로 찾을 수 있도록 목차를 만드는 개념으로, 데이터가 정렬돼있는 주소값을 저장하는 오브젝트

  • 일반적인 테이블은 정렬이 돼있지 않지만, 인덱스는 정렬돼 있음
  • 전체 데이터에서 적은 양의 데이터를 검색할 때 사용
    • 전체 테이블의 15% 이내여야 유리
  • 성능향상 조건 → I/O지연시간 낮추기
  • B트리로 구성

인덱스를 사용하면 안되는 경우

1. LIKE 검색 시 좌변에 %를 붙일 경우

  컬럼의 값과 주소를 정렬하여 저장하는 인덱스는 맨 처음 값이 무엇인지 모른다면 참조 불가능하다. 이럴 경우 Full Scan을 해야 한다.

  • WHERE column1 LIKE '%index' → 사용 불가
  • WHERE column2 LIKE 'index%' → 사용 가능

2. IS NULL or NOT NULL을 사용 할 경우

  • IS NULL → NULL은 value에 들어가지 않음
  • IS NOT NULL → 인덱스는 NULL이 없으므로 Full Scan

3. 인덱스로 지정된 칼럼이 가공되거나 변경된 경우

  • SUBSTR() 같이 중간 부분을 떼어내는 경우
  • 칼럼의 값이 변형된 경우

4. 부정 연산자를 사용하는 경우

  • 부정 연산자를 사용하면 결과값의 범위가 넓어짐

5. 암시적 형변환

  암시적 형변환이 일어날 경우, 인덱스 컬럼이 가공이 되는지, 비교되는 데이터가 변경이되는지 에 따라서 인덱스를 사용할 수도 안할수도 있음


참고자료