[SQL] - 인덱스 개념

유현민·2022년 3월 21일
0

SQL

목록 보기
30/34

1. 인덱스

  • 책의 찾아보기와 같다.
  • 많다고 좋은건 아님
  • MySQL이 판단해 준다.

2. 장점과 단점

  1. 장점
  • SELECT 문으로 검색하는 속도가 매우 빨라진다.
  • 컴퓨터의 부담이 줄어들어 전체 시스템 성능이 향상
  1. 단점
  • 추가적인 공간이 필요(테이블 크기의 10%)
  • 처음에 인덱스를 만드는 데 시간이 오래 걸릴 수 있다.
  • 데이터 변경 작업이 자주 일어나면 성능이 나빠질 수 있다.

3. 인덱스 종류

  1. 클러스터형 인덱스
  • 영어사전처럼 책의 내용이 이미 알파벳 순서대로 정렬되어 있다.
  1. 보조 인덱스
  • 찾아보기가 별도로 있고, 찾아보기에서 해당 단어를 찾은 후에 옆에 표시된 페이지를 펼쳐서 찾는 방식

4. 자동으로 생성되는 인덱스

  • 기본 키로 지정하면 자동으로 기본 키 열에 클러스터형 인덱스가 생성된다.
  • 기본 키는 테이블에 하나만 지정 가능 -> 결국 클러스터형 인덱스는 테이블에 한 개만 가능
USE market_db;
CREATE TABLE TABLE1(
col1 INT PRIMARY KEY,
col2 INT,
col3 INT
);

  • key_name에 primary라고 써있다.

고유 키도 인덱스가 자동으로 생성된다.

CREATE TABLE TABLE2(
col1 INT PRIMARY KEY,
col2 INT UNIQUE,
col3 INT UNIQUE
);

SHOW INDEX FROM TABLE2;

5. 자동으로 정렬되는 클러스터형 인덱스

USE market_db;
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;

mem_id 열을 기본 키로 설정하고 내용 확인

ALTER TABLE member
ADD CONSTRAINT
PRIMARY KEY(mem_id);
SELECT * FROM member;


아이디를 기준으로 정렬 순서가 바뀜

6. 정렬되지 않는 보조 인덱스

  • 보조 인덱스는 정렬되지 않는다.
DROP TABLE if EXISTS 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_id);
SELECT * FROM member;


순서가 변경되지 않는다

profile
smilegate

0개의 댓글