인덱스는 SELECT에서 즉각적인 효과를 내는 빠른 방법 중 한 가지이다. 즉, 적절한 인덱스를 생성하고 인덱스를 사용하는 SQL을 만든다면 기존보다 아주 빠른 응답 속도를 얻을 수 있다.
인덱스의 장점은 다음과 같다.
1. SELECT 문으로 검색하는 속도가 매우 빨라진다.
2. 그 결과 컴퓨터의 부담이 줄어들어 결국 전체 시스템의 성능이 향상된다.
인덱스의 단점은 다음과 같다.
1. 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요하다. (대략 테이블 크기의 10% 정도의 공간 필요)
2. 처음에 인덱스를 만드는 데 시간이 오래 걸릴 수 있다.
3. SELECT가 아닌 데이터의 변경 작업(INSERT, UPDATE, DELETE)이 자주 일어나면 오히려 성능이 떨어질 수 있다.
MySQL에서 사용되는 인덱스의 종류는 크게 두 가지로 나뉘는데, 클러스터형 인덱스(Clustered Index)와 보조 인덱스(Secondary Index)이다. 이 두 개를 쉽게 비교하면 클러스터형 인덱스는 영어사전과 같고, 보조 인덱스는 책 뒤에 찾아보기가 있는 일반적인 책과 같다.
보조 인덱스는 일반적인 책과 같이 찾아보기가 별도로 있고, 찾아보기에서 해당 단어를 찾은 후에 옆에 표시된 페이지를 펼쳐야 실제 찾는 내용이 있는 것을 말한다.
클러스터형 인덱스는 영어사전처럼 책의 내용이 이미 알파벳 순서대로 정렬되어 있는 것이다. 따라서 별도의 찾아보기가 없고 책 자체가 찾아보기가 되는 것이다.
인덱스는 테이블의 열 단위에 생성되며, 하나의 열에는 하나의 인덱스를 생성할 수 있다.
테이블을 생성할 때 기본 키로 지정된 열이 있다면 해당 열에는 자동적으로 클러스터형 인덱스가 생성된다. 즉, 해당 열을 기준으로 데이터가 정렬되는 것을 확인할 수 있다.
테이블을 생성한 뒤, SHOW INDEX문을 통해 정보 확인
USE market_db;
CREATE TABLE table1 (
col1 INT PRIMARY KEY,
col2 INT,
col3 INT
);
SHOW INDEX FROM table1;
Key_name의 경우 PRIMARY로 표시되어 있는데, 이는 클러스터형 인덱스를 의미한다.
CREATE TABLE table2 (
col1 INT PRIMARY KEY,
col2 INT UNIQUE,
col3 INT UNIQUE
);
SHOW INDEX FROM table2;
UNIQUE로 지정할 경우 Key_name에 col2, col3가 추가된 것을 확인할 수 있으며, 이는 보조 인덱스를 의미한다.
즉, 클러스터형 인덱스는 테이블 당 하나만 존재하며 보조 인덱스는 여러 개 존재할 수 있다.
'📟 Database > 혼자 공부하는 SQL' 카테고리의 다른 글
[MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX) (0) | 2022.04.09 |
---|---|
[MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기 (0) | 2022.04.09 |
[MySQL] 11. 가상의 테이블: 뷰(생성, 수정, 삭제) (0) | 2022.04.09 |
[MySQL] 10. SQL 테이블 제약조건(기본키, 외래키, 고유키) (0) | 2022.04.09 |
[MySQL] 9. GUI 환경에서 테이블 생성하기, SQL로 테이블 만들기 (0) | 2022.04.08 |