DB Index - 1

DB Index

인덱스는 실제 SELECT 문을 바꾸지는 않지만, SELECT 문을 빨리 결과가 나올 수 있도록 해주는 데이터베이스 객체 이다

특징 및 장점

단점

가장 쉬운 예제

책 맨 뒷부분에 찾아보기 를 활용하여 찾는 것과 비슷한 개념이다.

image-20200130231739515

인덱스의 종류와 자동 생성

인덱스의 종류

자동으로 생성되는 인덱스

CREATE TABLE userTbl
(userID char(8) NOT NULL PRIMARY KEY,
 name		varchar(10) NOT NULL,
 birthYear	int NOT NULL,
 ...
)

image-20200130233430474

<userID 기준으로 데이터가 정렬 됨을 확인할 수 있다.>

테이블 생성 시에 제약 조건으로 Primary Key 또는 Unique를 사용하면 인덱스가 자동 생성된다.

CREATE TABLE tbl1
( a INT PRIMARY KEY,
b INT,
c INT
);

SHOW INDEX FROM tbl1;

image-20200130233846718

<결과를 보았을 때, key_nameprimary 인것을 보아서, 클러스터형 인덱스로 볼 수 있다(예외가 있긴 함)>

CREATE TABLE tbl3
( a INT PRIMARY KEY,
b INT UNIQUE,
c INT UNIQUE,
d INT
);

SHOW INDEX FROM tbl3;

image-20200130234154798

# 보조 인덱스로  이루어져 있다.

CREATE TABLE tbl4
( a INT UNIQUE,
b INT UNIQUE,
c INT UNIQUE,
d INT
);

SHOW INDEX FROM tbl4;

image-20200130234325051

CREATE TABLE tbl5
( a INT UNIQUE NOT NULL, # 이럴 경우 a  클러스터형 인덱스라   있다
b INT UNIQUE,
c INT UNIQUE,
d INT
);

SHOW INDEX FROM tbl5;

image-20200130234436257

위의 a가 클러스터형 인덱스인 증거

INSERT INTO tbl5 values(3, 3, 3, 3);
INSERT INTO tbl5 values(1, 1, 1, 1);

SELECT * FROM tbl5;

image-20200130234812827

  • PRIMARY KEY로 지정한 열은 클러스터형 인덱스가 생성
  • UNIQUE NOT NULL로 지정한 열은 클러스터형 인덱스가 생성
  • UNIQUE( 또는 UNIQUE NULL)로 지정한 열은 보조 인덱스가 생성된다.
  • PRIMARY KEYUNIQUE NOT NULL이 있으면 PRIMARY KEY로 지정한 열에 우선 클러스터형 인덱스가 생성된다.

Reference

이것이 MySQL 이다 - 유투브 강의