SQL 5 - 인덱스

우수민·2023년 12월 18일
0

강의 자료

목록 보기
14/18
post-thumbnail
  • 인덱스(index) : 데이터를 빠르게 찾을 수 있도록 도와주느 도구로, 실무에서는 현실적으로 인덱스 없이 데이터 베이스 운영이 불가능

  • 인덱스의 장점과 단점

    • 장점
      • SELECT 문으로 검색하는 속도가 빨라짐
      • 컴퓨터의 부담이 줄어들어 전체 시스템 성능 향상
    • 단점
      • 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요(테이블의 약 10% 차지)
      • 처음에 인덱스를 만든느 데 시간이 오래 걸릴 수 있음

인덱스의 종류

  • 클러스터형 인덱스(Clustered Index) : 기본 키로 지정하면 자동으로 생성되며 테이블에 1개만 생성 가능
    • ex. 영어 사전
  • 보조 인덱스(Secondary Index) : 고유키로 지정하면 자동 생성되며 여러 개를 만들수 있지만 자동 정렬되지 않음.
    • ex. 책의 뒤에 있는 찾아보기
  • 고유 인덱스(Unique Index) : 값이 중복되지 않는 인덱스

인덱스의 내부 작동 원리

  1. 균형 트리의 개념
  • 노드(node): 균형 트리 구조에서 데이터가 저장되는 공간

  • 노드라는 용어는 개념적인 설명에서 주로 나오는 용어이며, MySQL에서는 페이지(page)라고 부름
  • 페이지는 최소한의 저장단위로, 16Kbyte 크기
  • 균형트리는 데이터를 검색할때 좋은 성능을 발휘함
  1. 균형 트리의 페이지 분할
  • 인덱스를 구성하면 데이터 변경 작업(INSERT, UPDATE, DELETE) 시 페이지 분할 작업이 발생하여 성능이 나빠짐
    • 페이지 분할 : 새로운 페이지를 준비해서 데이터를 나누는 작업

인덱스 생성과 제거 문법

  1. 인덱스 생성 문법
  • 테이블을 생성할 때 특정 열을 기본키, 고유 키로 설정하면 인덱스가 자동으로 생성
    • Primary Key 문법을 사용하면 클러스터형 인덱스
    • Unique 문법을 사용하면 보조 인덱스
    • 그 외에 직접 인덱스 생성시 CREATE INDEX문
	CREATE [UNIQUE] INDEX 인덱스_이름
		ON 테이블_이름 (열_이름) [ASC | DESC]
    -- 여기서 생성되는 인덱스는 보조 인덱스
  • UNIQTE는 중복이 안 되는 고유 인덱스를 만그는 것이며, 생략하면 중복이 허용됨
  • CREATE UNIQUE로 인덱스를 생성하려면 기존에 입력된 값들이 중복이 있으면 안됨
  1. 인덱스 제거 문법
	DROP INDEX 인덱스_이름 ON 테이블_이름
  • 기본 키, 고유 키로 자동 생성된 인덱스는 DROP INDEX로 제거 불가능
  • 다만, ALTER TABLE 문으로 기본 키나 고유 키를 제거하면 자동으로 생성된 인덱스로 제거 가능

  • 참고 서적 : 혼자 공부하는 SQL
profile
데이터 분석하고 있습니다

0개의 댓글