Home
>
DB
>
๐พ[Database] Clustered Index๋ ๋ฌด์์ผ๊น์?
Database
Native SQL Query
MySQL
โ๐พ[Database] Clustered Index๋ ๋ฌด์์ผ๊น์?โ
๐ Intro.
-
Clusterd Index๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์์ ๋ฐ์ดํฐ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋๋ ์ธ๋ฑ์ค์
๋๋ค.
- ์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ธ๋ฑ์ค๊ฐ ๊ณง ๋ฐ์ดํฐ์ด๋ฉฐ, ์ธ๋ฑ์ค๋ฅผ ์กฐํํ ๋ ๋ณ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๊ฐ๋ ๊ณผ์ ์ด ํ์ํ์ง ์์ต๋๋ค.
โ
1๏ธโฃ Clustered Index์ ํน์ง.
-
1. ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๊ฐ ๋์ผ
- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ ํ
์ด๋ธ์ ํ(ROW) ์์ฒด๋ฅผ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅํฉ๋๋ค.
- ์ฆ, ์ธ๋ฑ์ค์ ํค ๊ฐ์ด ๋ฐ์ดํฐ์ ์ ์ฅ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ํ๋์ ํ
์ด๋ธ์๋ ํ๋์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ง ์กด์ฌํ ์ ์์ต๋๋ค.
-
2. ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์ ์ฅ
- ๋ฐ์ดํฐ๋ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ํค ๊ฐ ์์๋๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
- ์: PRIMARY KEY๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ํ
์ด๋ธ.
-
3. ๋น ๋ฅธ ๊ฒ์
- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ ๋ ฌ๋์ด ์์ผ๋ฏ๋ก ๋ฒ์ ๊ฒ์์ด๋ ์ ๋ ฌ ์ฟผ๋ฆฌ์์ ์ฑ๋ ์ด ๋งค์ฐ ๋ฐ์ด๋ฉ๋๋ค.
-
4. ์ฝ์
/์ญ์ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ์ฑ
- ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ฏ๋ก, ์ฝ์
/์ญ์ ์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์ต๋๋ค(ํนํ ์ค๊ฐ์ ์ฝ์
ํ ๊ฒฝ์ฐ).
โ
2๏ธโฃ Clustered Index์ ์ค์ ์์
1๏ธโฃ ์์ : PRIMARY KEY๋ก ์์ฑ๋ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค.
- MySQL์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ ํค(Primary Key)๋ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ก ์์ฑ๋ฉ๋๋ค.
CREATE TABLE article (
article_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
created_at DATETIME
);
-
๊ฒฐ๊ณผ :
- article_id๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ๋ฉ๋๋ค.
- PRIMARY KEY๊ฐ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ์ญํ ์ ํฉ๋๋ค.
2๏ธโฃ ์์ : UNIQUE๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ์์ฑ.
- MySQL์์๋ ํน์ ์ด์ ๊ธฐ์ค์ผ๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค.
CREATE TABLE user (
user_id INT AUTO_INCREMENT,
username VARCHAR(255) UNIQUE,
email VARCHAR(255),
PRAIMARY KEY (user_id),
UNIQUE KEY idx_username (username)
);
-
๊ฒฐ๊ณผ:
- PRIMARY KEY(user_id)๊ฐ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- username์ ์ ๋ ฌ๋์ง ์๊ณ , ๋ณ๋์ ๋นํด๋ฌ์คํฐํ(Non-Clustered) ์ธ๋ฑ์ค๋ก ์ ์ฅ๋ฉ๋๋ค.
โ
3๏ธโฃ Clustered Index์ ์ฅ์ .
-
1. ๋น ๋ฅธ ๊ฒ์:
- ๋ฐ์ดํฐ๊ฐ ์ธ๋ฑ์ค ํค ๊ฐ์ผ๋ก ์ ๋ ฌ๋์ด ์์ผ๋ฏ๋ก, ๋ฒ์ ๊ฒ์(์: BETWEEN, ORDER BY)์์ ๋น ๋ฅธ ์ฑ๋ฅ ์ ๊ณต.
-
2. ๋ฐ์ดํฐ ์ ๊ทผ ์ต์ํ:
- ์ธ๋ฑ์ค๊ฐ ๊ณง ๋ฐ์ดํฐ์ด๋ฏ๋ก, ๋ณ๋์ ํฌ์ธํฐ๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์์๋ ๋จ.
-
3. ํจ์จ์ ์ธ ์ ์ฅ ๊ณต๊ฐ:
- ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๊ฐ ๊ฒฐํฉ๋์ด ๋ณ๋์ ์ธ๋ฑ์ค ์ ์ฅ ๊ณต๊ฐ์ด ํ์ ์์.
โ
4๏ธโฃ Clustered Index์ ๋จ์ .
-
1. ์ฝ์
/์ญ์ ์ฑ๋ฅ ์ ํ:
- ๋ฐ์ดํฐ๊ฐ ํญ์ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ฏ๋ก, ์ค๊ฐ์ ์ฝ์
ํ๊ฑฐ๋ ์ญ์ ํ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ธ ๋น์ฉ ๋ฐ์.
-
2. ์
๋ฐ์ดํธ ์ฑ๋ฅ ๋ฌธ์ :
- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ํค ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์ฌ๋ฐฐ์ด์ด ํ์ํ ์ ์์.
-
3. ํ๋๋ง ์์ฑ ๊ฐ๋ฅ:
- ํ ํ
์ด๋ธ์ ํ๋์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ง ํ์ฉ๋๋ฏ๋ก, ์ฌ๋ฌ ์ ๋ ฌ ๊ธฐ์ค์ด ํ์ํ๋ฉด ๋นํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ผ ํจ.
โ
5๏ธโฃ Clustered Index๊ฐ ์ ํฉํ ๊ฒฝ์ฐ.
-
1. ๋ฒ์ ๊ฒ์์ด ๋น๋ฒํ ๊ฒฝ์ฐ:
- ์์:
SELECT *
FROM orders
WHERE order_date
BETWEEN '2025-01-01' AND '2025-01-31';
-
2. ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๊ฐ ํ์ํ ๊ฒฝ์ฐ:
- ์์:
SELECT *
FROM article
ORDER BY created_at DESC;
-
3. ๋ฐ์ดํฐ ์ฝ๊ธฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ:
- ๋ฐ์ดํฐ ์ฝ๊ธฐ ์ฑ๋ฅ์ด ์ค์ํ ๋ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ฉด ํจ์จ์ .
๐ ์ ๋ฆฌ.
-
Clustered Index๋ ๋ฐ์ดํฐ๊ฐ ์ธ๋ฑ์ค ํค ๊ฐ ์์๋๋ก ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅ๋๋ ์ธ๋ฑ์ค์
๋๋ค.
-
์ฅ์ : ๋ฒ์ ๊ฒ์๊ณผ ์ ๋ ฌ ์ฟผ๋ฆฌ์์ ๋งค์ฐ ํจ์จ์ .
-
๋จ์ : ์ฝ์
/์ญ์ ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ, ํ ํ
์ด๋ธ์์ ํ๋๋ง ์์ฑ ๊ฐ๋ฅ.
- MySQL์์๋ PRIMARY KEY๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ก ์ฌ์ฉ๋ฉ๋๋ค.