공든탑앱 열기

인덱스·뷰·파티션

정보처리기사 · 물리 DB와 데이터베이스 활용 · 약 12분

쉽게 말하면

책 뒤의 찾아보기처럼, 인덱스는 데이터를 빨리 찾게 해 주는 목록이에요. 대신 데이터를 넣고 고칠 때마다 인덱스도 고쳐야 해서 쓰기는 느려져요. 뷰는 SELECT 결과를 표처럼 쓸 수 있게 저장해 둔 가상 테이블이에요. 실제 데이터는 없고 정의만 있어요. 파티션은 큰 표를 기준에 따라 여러 조각으로 나눠 저장하는 거예요.

시험용 정의

인덱스는 키 값과 그 행의 위치를 짝지어 둔 구조로 검색을 빠르게 한다. 대부분 B-트리(균형 트리) 구조이며, 데이터가 물리적으로 인덱스 순서대로 정렬된 클러스터드 인덱스(테이블당 하나)와 그렇지 않은 넌클러스터드 인덱스가 있다. 인덱스가 많으면 조회는 빨라지지만 삽입·삭제·갱신은 느려진다. 뷰는 하나 이상의 기본 테이블에서 유도한 가상 테이블로, 논리적 독립성과 보안(필요한 열만 공개)을 주고 질의를 단순하게 한다. 뷰는 ALTER로 변경할 수 없고, 기본키를 포함하지 않거나 집계·DISTINCT·GROUP BY가 들어간 뷰는 삽입·삭제·갱신에 제약이 있다. 파티션은 큰 테이블을 나눠 저장하는 것으로 범위, 해시, 목록, 조합 분할이 있다. 클러스터는 자주 함께 조회하는 테이블의 데이터를 같은 블록에 저장하는 기법이다.

비유로 이해하기

도서관으로 비유하면 인덱스는 '저자명 찾아보기 카드', 클러스터드 인덱스는 책 자체를 저자명 순서로 꽂아 둔 서가다. 뷰는 '신간 코너' 안내판처럼, 책을 옮기지 않고 보는 방법만 정해 둔 것이다.

자세히

먼저 알아 둘 말

말뜻
B-트리모든 리프 노드가 같은 깊이에 있는 균형 다진 트리. 인덱스 구조로 널리 쓰임
가상 테이블실제 데이터를 저장하지 않고 정의(SELECT)만 저장한 테이블
기본 테이블실제 데이터를 저장한 테이블. 뷰가 참조하는 원본
파티셔닝큰 테이블이나 인덱스를 여러 조각으로 나누는 것

인덱스

항목내용
만들기·지우기CREATE [UNIQUE] INDEX 이름 ON 테이블(열) / DROP INDEX 이름
클러스터드물리적 저장 순서 = 인덱스 순서. 테이블당 하나. 범위 검색에 유리
넌클러스터드데이터와 인덱스 순서가 별개. 여러 개 가능
장점검색·정렬 속도 향상
단점저장 공간 추가, 삽입·삭제·갱신 때 인덱스도 고쳐야 해 느려짐

뷰의 특징

  • 기본 테이블에서 유도한 가상 테이블. 저장 공간이 거의 필요 없다
  • 논리적 데이터 독립성 제공, 필요한 데이터만 보여 줘 보안에 유리
  • 뷰 위에 또 다른 뷰를 만들 수 있다
  • ALTER로 변경 불가. DROP 후 다시 CREATE
  • 기본 테이블이나 상위 뷰를 지우면 그것으로 만든 뷰도 삭제된다
  • 독자적인 인덱스를 가질 수 없다

파티션 종류

종류나누는 기준예
범위 분할값의 범위2024년, 2025년 데이터
해시 분할해시 함수 값고르게 분산할 때
목록 분할값 목록지역: 서울, 부산
조합 분할범위 + 해시 등 섞음연도별로 나누고 다시 해시

기출에서 더 나온 것

말뜻
병렬 DB 수평 분할라운드 로빈, 범위 분할, 해시 분할 (예측 분할은 없음)
DROP VIEW … CASCADE뷰를 지우면서 그 뷰를 참조하는 다른 뷰도 함께 지운다. RESTRICT는 참조하는 것이 있으면 지우지 않는다

시험에 이렇게 나와요

확인 문제

Q1. 뷰(View)에 대한 설명으로 틀린 것은?

  1. 가상 테이블이다
  2. ALTER VIEW로 정의를 바꿀 수 있다
  3. 보안에 도움이 된다
  4. 뷰 위에 다른 뷰를 정의할 수 있다
정답 보기

2번 ALTER VIEW로 정의를 바꿀 수 있다

정보처리기사 기준으로 뷰는 ALTER로 정의를 바꿀 수 없어 DROP 후 다시 CREATE한다. 뷰가 정의된 기본 테이블이 삭제되면 뷰도 자동 삭제된다.

Q2. 인덱스에 대한 설명으로 틀린 것은?

  1. 추가 저장 공간이 필요하다
  2. 검색 속도를 높인다
  3. 데이터 삽입·삭제가 많으면 성능이 좋아진다
  4. 대부분 B-트리 구조를 쓴다
정답 보기

3번 데이터 삽입·삭제가 많으면 성능이 좋아진다

삽입·삭제 때 인덱스도 고쳐야 해 오히려 느려질 수 있다.

Q3. 뷰를 정의한 기본 테이블을 삭제하면?

  1. 뷰는 그대로 남는다
  2. 오류가 나서 삭제되지 않는다
  3. 뷰도 자동으로 삭제된다
  4. 뷰가 기본 테이블로 바뀐다
정답 보기

3번 뷰도 자동으로 삭제된다

뷰도 자동으로 삭제된다. 뷰는 기본 테이블을 바탕으로 만든 가상 테이블이라 기본 테이블이 없으면 존재할 수 없다.

Q4. 데이터를 지역(서울, 부산, 대구)처럼 정해진 값 목록으로 나누는 파티션은?

  1. 범위 분할
  2. 조합 분할
  3. 해시 분할
  4. 목록 분할
정답 보기

4번 목록 분할

목록(List) 분할이다. 정해진 값 목록으로 나눈다. 범위 분할은 날짜·숫자 범위로, 해시 분할은 해시 함수 결과로 나눈다.

Q5. 뷰(View)에 대한 설명으로 옳은 것은?

  1. 뷰마다 자체 인덱스를 갖는다
  2. 데이터를 물리적으로 따로 저장한다
  3. 뷰 위에 다른 뷰를 만들 수 있다
  4. ALTER VIEW로 정의를 바꾼다
정답 보기

3번 뷰 위에 다른 뷰를 만들 수 있다

뷰는 가상 테이블이라 저장 공간·인덱스가 없고, 바꾸려면 지우고 다시 만든다.

Q6. 기반 뷰를 지우면서 그 뷰를 참조하는 다른 뷰까지 함께 지우는 옵션은?

  1. CASCADE
  2. NO ACTION
  3. RESTRICT
  4. SET NULL
정답 보기

1번 CASCADE

RESTRICT는 참조하는 것이 있으면 지우지 않는다.

헷갈리기 쉬운 O·X

클러스터드 인덱스는 테이블 하나에 여러 개 만들 수 있다.

정답 보기

X 물리 순서는 하나뿐이라 하나만 가능.

뷰는 필요한 열만 보여 주어 보안에 도움이 된다.

정답 보기

O

뷰는 독자적인 인덱스를 가질 수 있다.

정답 보기

X 정보처리기사 기준으로 뷰는 독자적인 인덱스를 가질 수 없다.

함께 보면 좋은 개념