테이블에서 특정 데이터를 식별하기 위한 키를 보고 기본키(Primary Key, PK)라고 부른다. 대부분의 경우에 테이블을 생성할 때 PK를 설정한다. PK의 특징 중 하나는 PK를 기준으로 정렬을 해서 데이터를 보관한다. 실제 그런지 테스트 해보자.
PK가 포함된 users 테이블을 하나 만들어보자.
DROP TABLE IF EXISTS users; # 기존 테이블 삭제
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100)
);
그러고 DB에 데이터를 4개 넣어보자.
INSERT INTO users (id, name) VALUES
(1, 'a'),
(3, 'b'),
(5, 'c'),
(7, 'd');
SELECT * FROM users;
Before
그런 뒤에 id가 7인 값을 2로 바꾼 뒤 데이터를 다시 조회해보자.
UPDATE users
SET id = 2
WHERE id = 7;
SELECT * FROM users;
After
id 컬럼을 기준으로 정렬되어 있는 채로 데이터가 조회된다. 왜냐하면 PK가 인덱스의 일종이기 때문이다. 이렇게 원본 데이터 자체가 정렬되는 인덱스를 보고 클러스터링 인덱스라고 부른다. PK(Primary Key) = 클러스터링 인덱스라고 생각해도 된다. 클러스터링 인덱스는 PK(Primary Key) 밖에 없기 때문이다.
(클러스터링 인덱스라는 용어가 엄청나게 중요한 건 아니기 때문에 기억하기 어렵다면 일단 무시하고 넘어가자.)
인덱스가 실제 적용되어 있는 지 아래 SQL문으로 확인해보자.
# 특정 테이블 인덱스 조회
# SHOW INDEX FROM 테이블명;
SHOW INDEX FROM users;
⭐
[이것만은 꼭 기억해두자!]
- PK에는 인덱스가 기본적으로 적용된다.
- PK에는 인덱스가 적용되어 있으므로 PK를 기준으로 데이터가 정렬된다.