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
반응형
'인공지능, 데이터분석 > [SQL] 혼자 공부하는 SQL' 카테고리의 다른 글
[혼공SQL] 8장. SQL과 파이썬 연결 (0) | 2023.05.10 |
---|---|
[혼공SQL] 7장. 스토어드 프로시저 (0) | 2023.05.10 |
[혼공SQL] 5장. 테이블(제약조건 : 기본키, 외래키, 고유키)과 뷰 (1) | 2023.04.24 |
[혼공SQL] 4장. SQL 고급 문법(데이터 형식, 데이터 형변환, 조인, IF, CASE, WHILE, 동적SQL) (0) | 2023.04.18 |
[혼공학습단 9기 / SQL] ORDER BY, LIMIT, DISTINCT, GROUP BY, HAVING, 2주차 미션 (0) | 2023.01.15 |