[SQL 기초 강의] 15강. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스 - YouTube
USE market_db ;
CREATE TABLE table1 (
col1 INT PRIMARY KEY,
col2 INT,
col3 INT
);
SHOW INDEX FROM table1;
키네임에 프라이머리 있으면 자동으로 클러스터형 인덱스가 만들어진다. 그 열에 입력된 값 기준으로 사전식 정렬.
CREATE TABLE table2 (
col1 INT PRIMARY KEY,
col2 INT UNIQUE,
col3 INT UNIQUE
);
SHOW INDEX FROM table2;
여기서 프라이머리 키인 컬럼 1은 클러스터 인덱스, 컬럼2, 컬럼3는 보조 인덱스로 봄.
둘 다 자동으로 생성되는 인덱스이다.
유니크 조건이 여러 열에 붙을 수 있듯, 보조 키도 여러개 만들 수 있음.
프라이머리키와 클러스터형 인덱스는 테이블 당 하나만 만들 수 있다.
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;
새로운 멤버 테이블 만들었다. 인덱스 없이(PK 지정 안 하고) 무작위로 입력하면, 입력한 순서 그대로 테이블에서 보인다.
ALTER TABLE member
ADD CONSTRAINT
PRIMARY KEY(mem_id);
SELECT *FROM member;
프라이머리 키 다시 지정한 후 불러오면 멤버 아이디가 알파벳 순으로 정렬되는 걸 확인할 수 있다.
클러스터형 인덱스가 자동으로 생성된 것.
ALTER TABLE member DROP PRIMARY KEY ;
다시 기본 키를 제거하고
ALTER TABLE member
ADD CONSTRAINT
PRIMARY KEY(mem_name);
새로운 기본 키를 멤버 이름 열에 부여하면
SELECT * FROM member;
멤버 이름 순으로 다시 정렬되는 걸 확인할 수 있다.
INSERT INTO member VALUES ('GRL', '소녀시대', 8, '서울');
이 상태에서 소녀시대 행을 새로 입력하면
SELECT * FROM member;
블핑, 여자친구 사이에 삽입이 되었다. ㄱㄴㄷ 순으로.
보조인덱스는 UNIQUE, 고유 키로 지정하면 생성된다.
클러스터 형 인덱스를 사전 만들기에 비유한다면,
보조 인덱스는 용어 사전이 아니라 줄글로 된 책의 인덱스를 만드는 것과 비슷하다.
책의 내용을 다시 정렬하는 것이 아니라, 맨 뒤에 <찾아보기>를 추가하는 방식이다.
USE market_db;
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;
유니크 키를 추가한 뒤 멤버 테이블을 조회해도, 내용, 순서가 바뀌지 않았다. 보조 인덱스가 생성된 것이다.
ALTER TABLE member
ADD CONSTRAINT
UNIQUE (mem_name);
SELECT * FROM member;
두번째 유니크 키를 지정함. 책 뒤에 찾아보기는 여러 버전으로 만들 수 있으므로.
INSERT INTO member VALUES ('GRL', '소녀시대' ,8, '서울');
SELECT * FROM member;
새로운 행은 그냥 맨 뒤에 추가된다.
'SQL' 카테고리의 다른 글
『혼자 공부하는 SQL』17강 복습- 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX) (0) | 2023.07.09 |
---|---|
『혼자 공부하는 SQL』16강 복습- 인덱스 내부 작동원리, 데이터 검색 (0) | 2023.07.09 |
『혼자 공부하는 SQL』14강 복습- 뷰 생성, 수정, 삭제 (0) | 2023.07.08 |
『혼자 공부하는 SQL』13강- 테이블 제약조건 기본키, 외래키 (0) | 2023.07.03 |
『혼자 공부하는 SQL』11강- 동적 SQL 연습 (0) | 2023.06.26 |