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 |