728x90
반응형
인덱스(Index)

 

  • 인덱스는 데이터를 빠르게 찾을 수 있는 수단으로서 테이블에 대한 조회 속도를 높여 주는 자료구조이다.
  • 인덱스는 테이블의 특정 레코드 위치를 알려 주는 용도로 사용한다.
  • 인덱스는 자동으로 생성되지 않는다.
  • 기본 키(PK: Primary Key) 컬럼은 자동으로 인덱스가 생성된다.
  • 연월일이나 이름을 기준으로 하는 인덱스는 자동으로 생성되지 않는다.
  • ** 데이터베이스에서 테이블 검색 속도를 향상시키기 위한 자료구조
  • 별도의 추가 저장 공간을 활용하여 인덱스 생성
  • 데이터와 데이터 위치를 포함한 자료구조 생성
  • 데이터를 빠르게 찾을 수 있기 때문에 디스크 엑세스 횟수 감소
  • DBMS 에서 인덱스를 자동으로 사용하여 유지 보수 수행
  • 인덱스는 언제든지 생성 및 삭제가 가능하며 다른 테이블이나 인덱스에 영향을 주지 않는다.
  • 인덱스를 통해 데이터 조회를 위한 SELECT 뿐만 아니라 UPDATE와 DELETE의 성능도 향상

 

- 인덱스 관리

  • 데이터에 변경이 발생하면 최신 상태 유지를 위해 인덱스 관리가 필요하다.
  • 인덱스가 적용된 컬럼은 최신 데이터를 정렬된 상태로 유지해야한다.
  • INSERT, UPDATE, DELETE 발생시 인덱스 관리 수행
  • INSERT: 새로운 데이터에 대한 인덱스 추가
  • UPDATE: 기존의 인덱스는 사용하지 않도록 처리하고, 갱신된 데이터에 대한 인덱스 추가
  • DELETE: 삭제하는 데이터의 인덱스는 사용하지 않도록 처리

 

- 인덱스 장단점

  • 장점:
    - 테이블 조회 속도 향상
    - 전반적인 시스템 부하 감소

  • 단점:
    - 인덱스 관리를 위한 추가 작업 필요
    - 데이터베이스의 약 10% 정도의 추가 저장 공간 필요
    - 잘못된 인덱스 사용으로 성능이 저하될수도 있음

 

- 인덱스 사용에 적합한 경우

  • 규모가 큰 테이블
  • INSERT, UPDATE, DELETE 가 자주 발생하지 않는 컬럼
  • JOIN이나 WHERE 또는 ORDER BY에 자주 사용되는 컬럼
  • 중복되는 데이터가 최소인 컬럼

 

- 인덱스 자료구조

  • 트리 형태의 자료구조를 주로 사용하며
    특히 B Tree 계열에서 B* Tree 또는 B+Tree 구조를 가장 많이 사용한다.


- 인덱스 조회

 

SELECT *
FROM user_indexes;

 

SELECT *
FROM user_indexes
WHERE table_name = 'EMPLOYEES';

 

- 인덱스 컬럼 조회

SELECT *
FROM user_ind_columns;
SELECT *
FROM user_ind_columns
WHERE table_name = 'EMPLOYEES';

 

- 인덱스 사용 여부

 

SELECT *
FROM employees
WHERE employee_id = 100;

 

SELECT *
FROM employees
WHERE first_name = 'Steven';

728x90
반응형

'Language > RDBMS' 카테고리의 다른 글

엔터티(Entity)  (0) 2023.03.07
데이터 모델링의 이해  (0) 2023.03.07
뷰(View)  (0) 2023.03.06
[DDL] 명령어를 활용한 테이블 정의  (0) 2023.03.04
트랜잭션 및 병행(동시성) 제어  (0) 2023.03.04

+ Recent posts