728x90
반응형
본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다.
1. 인덱스
1.1 인덱스의 장점과 단점
- 장점
- SELECT 문으로 검색하는 속도가 매우 빨라짐
- 컴퓨터의 부담이 줄어들어 전체 시스템의 성능이 향상됨
- 단점
- 데이터베이스 안에 추가적인 공간이 필요함
- 처음 인덱스를 만드는 데 시간이 오래 걸림
- 인덱스는 잘 사용하면 SELECT의 검색 속도가 빨라지지만, 잘못 사용하면 오히려 성능이 나빠짐
2. 인덱스의 종류
- 클러스터형 인덱스 (Clustered Index) → 영어사전
- 보조 인덱스 (Secondary Index) → 찾아보기
2.1 클러스터형 인덱스
📌 자동 생성됨
- 기본 키로 지정하면 자동으로 클러스터형 인덱스 가 생성됨
- (기본 키는 테이블에 하나만 지정할 수 있으므로 클러스터형 인덱스도 테이블에 한 개만 만들 수 있음)
use market_db;
create table table1 (
col1 int primary key,
col2 int,
col3 int
);
show index from table1;
- Key_name : PRIMARY
- 기본 키(PK)로 설정하여 ‘자동으로 생성된 인덱스’
- 클러스터형 인덱스
- Column_name : col1
- col1 열에 인덱스가 만들어져있음
- Non_unique : 0
- 0 : False (중복 허용이 안 됨)
- 1 : True (중복 허용이 됨)
📌 자동 정렬됨
drop table if exists buy, member;
create table member
( mem_id char(8),
mem_name varchar(10),
mem_number int,
addr char(2)
);
insert into member values('TWC', '트와이스', 9, '서울');
insert into member values('BLK', '블랙핑크', 4, '경남');
insert into member values('WMN', '여자친구', 6, '경기');
insert into member values('OMY', '오마이걸', 7, '서울');
select * from member;
alter table member
add constraint
**primary key (mem_id); -**- pk 지정 (클러스터형 인덱스 생성)
select * from member;
▶ PK로 지정한 mem_id 가 자동 정렬된 것을 확인할 수 있음
insert into member values('GRL', '소녀시대', 8, '서울');
select * from member;
▶ 이후 추가로 데이터를 입력하면 알아서 기준에 맞춰서 정렬됨
2.2 보조 인덱스
- 보조 인덱스는 여러 개를 만들 수 있지만,
- 만들 때마다 데이터베이스의 공간을 차지하게 되어 시스템에 좋지 못한 영향을 미침
📌 자동 생성됨
create table table2 (
col1 int primary key,
col2 int unique, -- 고유키 지정
col3 int unique -- 고유키 지정
);
show index from table2;
📌 자동 정렬되지 않음
drop table if exists buy, member;
create table member
( mem_id char(8),
mem_name varchar(10),
mem_number int,
addr char(2)
);
insert into member values('TWC', '트와이스', 9, '서울');
insert into member values('BLK', '블랙핑크', 4, '경남');
insert into member values('WMN', '여자친구', 6, '경기');
insert into member values('OMY', '오마이걸', 7, '서울');
select * from member;
alter table member
add constraint
unique (mem_name);
select * from member;
▶ 보조 인덱스를 생성되어도 정렬은 변하지 않음
insert into member values('GRL', '소녀시대', 8, '서울');
select * from member;
▶ 데이터를 추가로 입력하면 제일 하단에 추가됨
728x90
반응형
'Data Analysis > 혼공SQL' 카테고리의 다른 글
[혼공SQL] 6-3 인덱스의 실제 사용 (0) | 2022.08.09 |
---|---|
[혼공SQL] 6-2 인덱스의 내부 작동 (0) | 2022.08.09 |
[혼공SQL] 5-3 가상의 테이블: 뷰 (0) | 2022.08.03 |
[혼공SQL] 5-2 제약조건으로 테이블을 견고하게 (0) | 2022.08.03 |
[혼공SQL] 5-1 테이블 만들기 (0) | 2022.08.03 |