Tech Collection

[SQL] Index 본문

Concept/Note

[SQL] Index

eee_269 2021. 5. 30. 22:18
728x90
반응형
  • 데이터의 고유성을 확인하거나 검색 성능을 향상시키기 위해 사용
  • 특정 컬럼에 인덱스를 생성하면 해당 컬럼의 데이터들을 정렬하여 별도 공간에 데이터의 물리적 주소와 함께 저장한다.
  • 단일 컬럼뿐만 아니라 다중 컬럼으로 구성될 수 있으며, 이 때 컬럼의 순서 정의가 중요하다.
  • B*Tree 구조
SHOW INDEX FROM <테이블명>;
  • 데이터 분포에 따라 인덱스를 타는 것이 유리할 경우 인덱스를 사용하도록 한다.
    • 조회하려는 레코드의 개수가 테이블 전체 레코드의 20~25%를 넘어서지 않는 경우에 인덱스가 유리하다.
  • 인덱스 컬럼에 함수를 사용하여 변형할 경우 사용할 수 없다.
  • 인덱스 컬럼에 수식을 사용할 경우 인덱스를 사용할 수 없다.
  • 결합 인덱스의 순서에 맞게 조건을 설정해야 인덱스 사용 가능하다.
  • 부정 비교의 경우 인덱스를 사용할 수 없다.
  • LIKE '%?' 앞부분이 아닌 뒷부분이 일치하는 경우 사용할 수 없다.
  • 인덱스 컬럼의 데이터 타입이 변경되어 비교하는 경우 사용할 수 없다.
  • 인덱스 생성
    • 인덱스 생성 컬럼은 정수형 데이터 타입이 효율적이다.
    • 가변적인 크기를 가지거나 정규화 할 수 없는 데이터들은 인덱싱 효율이 떨어진다.
    • 다중 컬럼 인덱스는 단일 컬럼 인덱스보다 더 효율적으로 INSERT/UPDATE/DELETE를 수행한다.
      • 가급적 업데이트를 하지 않는 컬럼을 지정
    • FULLTEXT 인덱스는 TEXT, BLOB, VARCHAR와 같은 가변적인 데이터를 효율적으로 인덱싱하기 위한 방법
728x90
반응형

'Concept > Note' 카테고리의 다른 글

[SQL] 실행 계획  (0) 2021.05.30
[SQL] JOIN  (0) 2021.05.30
[SQL] SubQuery  (0) 2021.05.30
[Interview] Java 기초 정리  (0) 2021.04.09