요르딩딩

INDEX (인덱스) 본문

[Web]/[DB & Mybatis]

INDEX (인덱스)

요르딩딩 2022. 9. 7. 14:44
728x90
반응형

[인덱스]

  • 인덱스 특징
    1. 인덱스는 where절에서 효과가 있다.
      1. 인덱스가 걸려있는 컬럼을 where에 조건으로 넣을 경우에 효과를 볼 수 있다.
    2. 인덱스 설정 기준
      1. 카디널리티가 높을수록 좋다 : 고유한 값 위주로 (중복이 적을 수록)
      2. 선택도가 낮으면 좋다 : 하나의 값으로 적은 row가 조회된다. (일반적으로 5~10%가 적당)
      3. 조회 활용도가 높을 수록 좋다 : 조회에 자주 사용되는 컬럼
      4. 수정빈도가 낮을수록 좋다 : 인덱스 테이블도 갱신되기 때문에 낮을수록 좋다.
      (인덱스도 DB 메모리를 사용하여 테이블 형태로 저장되므로 개수와 공간은 비례합니다.)
    3. DML에 미치는 영향도
      1. update, delete는 where절에 인덱스로 조건을 붙여주면, 크게 성능저하가 일어나지 않다, 조회시 빠른것이지 update, delete가 빠르다는게 아니다.
      2. insert의 경우, 기존 인덱스 페이지에 저장되어 있던 탐색 위치가 수정되어야 하므로 효율이 떨어짐니다.
    4. 그 밖의 index 명시사항
      1. where, order by, join절에 자주 사용되는 컬럼 사용하기
      2. LIKE와 사용할 경우 %가 뒤에 오도록 사용 (%가 앞에 사용되면 Full Scan)
    5. Multi colum index
      1. 컬럼이 모두 인덱스에 있는경우, 물리적인 데이터블록을 읽을 필요없이, 인덱스 테이블만 읽으면 된다.
      2. 고려사항 : where에 AND 연산자로 자주 같이 질의되는 컬럼들인 경우 설정한다.
    6. 인덱스 설정의 특징
      1. 조회 속도 향상
      2. 인덱스 테이블을 위한 시간,공간 필요
      3. update, delete, insert에 따라 성능 하락 발생
    7. Clustered index
      1. 테이블당 1개만 생성가능 (일반적으로 PK 컬럼으로 자동 생성됨.)
      2. 기본키의 경우 자동으로 clustered index로 설정된다.
      3. 물리적으로 테이터를 정리한다. 그러므로 1개만 생성 가능
    8. Non clustered index
      1. 테이블당 여러개 생성가능
      2. 조회시 물리적으로 정렬되어 있지 않기에 인덱스로 찾아가야한다.
728x90
반응형
Comments