인공지능, 데이터분석/[SQL] 혼자 공부하는 SQL

[혼공SQL] 6장. 인덱스

마법사 코딩공주 2023. 4. 26. 18:14
728x90
반응형

Chapter 6. 인덱스

6.1 인덱스 개념을 파악하자

<클러스터형 인덱스와 보조 익덱스 비교>

  클러스터형 인덱스 보조 인덱스
영문 Clustered Index Secondary Index
관련 제약조건 기본 키(Primary Key) 고유 키(Unique)
테이블당 개수 1개 여러 개
정렬 지정한 열로 정렬됨 정렬되지 않음
비유 영어사전 일반 책의 찾아보기

6.2 인덱스의 내부 작동

  • 인덱스는 내부적으로 균형 트리, 즉 나무를 거꾸로 표현한 자료 구조로 구성
  • 노드는 트리 구조에서 데이터가 저장되는 공간, MySQL에서는 노드를 페이지라 부름
  • 전체 테이블 검색(Full Table Scan)은 데이터를 처음부터 끝까지 검색하는 것
  • 페이지 분할은 데이터를 입력할 때, 입력할 페이지에 공간이 없어서 2개 페이지로 데이터가 나눠지는 것 -> SELECT의 속도르 향상시킬 수 있으나, 데이터 변경 작업(INSERT, UPDATE, DELETE)시 성능이 나빠짐
  • 인덱스 검색은 클러스터형 또는 보조 인덱스를 이용해서 데이터를 검색하는 것(속도는 인덱스를 사용하지 않았을 때보다 빠름)

6.3 인덱스의 실제 사용

 ▶ 인덱스 생성(기본 형식)

  • CREATE UNIQUE로 인덱스를 생성하려면 기존에 입력된 값들에 중복이 있으면 안됨
  • 인덱스를 생성한 후에 입력되는 데이터와도 중복될 수 없으니 신중하게 생성해야 함
CREATE [UNIQUE] INDEX 인덱스_이름
	ON 테이블_이름 (열_이름) [ASC | DESC]

▶ 인덱스 제거(기본 형식)

  • 기본 키, 고유 키로 자동 생성된 인덱스는 기본 키, 고유 키를 제거해야하며 DROP INDEX로 제거하지 못함
DROP INDEX 인덱스_이름 ON 테이블_이름

▶ 외래 키가 있을 때 인덱스 제거

SELECT table_name, constraint_name
	FROM information_schema.referential_constraints
    WHRER constraint_schema = 'market_db';
    
-- 테이블명만 수정하면 됨

ALTER TABLE buy
	DROP FOREIGN KEY buy_ibkf_1;
    
ALTER TABLE member
	DROP PRIMARY KEY;

 

728x90
반응형