[SQL] - 인덱스 개념
1. 인덱스
- 책의 찾아보기와 같다.
- 많다고 좋은건 아님
- MySQL이 판단해 준다.
2. 장점과 단점
- 장점
- SELECT 문으로 검색하는 속도가 매우 빨라진다.
- 컴퓨터의 부담이 줄어들어 전체 시스템 성능이 향상
- 단점
- 추가적인 공간이 필요(테이블 크기의 10%)
- 처음에 인덱스를 만드는 데 시간이 오래 걸릴 수 있다.
- 데이터 변경 작업이 자주 일어나면 성능이 나빠질 수 있다.
3. 인덱스 종류
- 클러스터형 인덱스
- 영어사전처럼 책의 내용이 이미 알파벳 순서대로 정렬되어 있다.
- 보조 인덱스
- 찾아보기가 별도로 있고, 찾아보기에서 해당 단어를 찾은 후에 옆에 표시된 페이지를 펼쳐서 찾는 방식
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;
순서가 변경되지 않는다
Author And Source
이 문제에 관하여([SQL] - 인덱스 개념), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@y7y1h13/SQL-인덱스-개념저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)