본문 바로가기
공부/데이터 베이스

효율적인 쿼리(인덱스, 뷰, JOIN)

by xladmt 2024. 7. 1.

인덱스

  • 테이블을 더 빠르게 조회하기 위한 참조 수단(책의 '찾아보기'와 유사)
  • 실무에서 매우 빈번히 사용 (검색 속도 향상)
  • 열 단위로 사용
  • 인덱스가 없다면? 어쩔 수 없이 모든 테이블의 데이터를 스캔해야 한다.
  • 테이블을 가리키는 대상이기에 테이블 삭제되면 같이 삭제

 

<인덱스의 부작용>

  • 인덱스를 저장할 추가적인 저장 공간 필요
  • 인덱스 작정 시간도 있다. (행 데이터가 너무 많으면 이 시간이 오래 걸릴 수 있음)
  • 검색(SELECT)가 아닌 작업(INSERT, UPDATE, DELETE) 시 성능 악화

 

<인덱스의 종류>

▶ 클러스터형 인덱스

  • PRIMARY KEY/ UNIQUE + NOT NULL 제약 조건 지정 시 자동 생성
  • 테이블 당 하나 ( 위에 두개 중 PRIMARY KEY가 우선적으로 생성)
  • 행데이터가 인덱스로 지정된 데이터에 대해 자동 정렬

▶ 보조 인덱스

  • 테이블당 여러 개 가능
  • 중복 가능
  • 고유키로 지정된 칼럼은 자동으로 보조 인덱스가 생성(UNIQUE 제약 조건)
  • 행 데이터가 인덱스로 지정된 데이터에 대해 자동 정렬X

 

인덱스 조회

SHOE INDEX FROM 테이블명;

 

인덱스 삭제

DROP INDEX 인덱스명 FROM 테이블명;

 

(보조)인덱스 생성

CREATE INDEX 인덱스명 ON 테이블명(열명);

 

 

뷰(VIEW)

  • 가상의 테이블
  • SELECT의 결과를 하나의 테이블처럼 사용하는 것(SELECT의 결과를 마치 테이블과 같이 간주)

 

<장점>

1. 쿼리 단순화 가능

2. 모든 데이터를 보여줄 필요가 없어짐

 

 

JOIN

  • 관계형 데이터베이스의 핵심 : 여러 개의 테이블을 하나로 묶는 방법
  • INNER JOIN
  • OUTER JOIN
    • LEFT
    • RIGHT
    • FULL