๐ซ ์ฐฐ๋ฆฌ์ แแ ตแซแแ ฆแจแแ ตแผ
[10๋ถ ํ ์ฝํก] ๐ซ ์ฐฐ๋ฆฌ์ แแ ตแซแแ ฆแจแแ ตแผ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌ.
๋ท๋ถ๋ถ ์ค๋ช (non-clustered, non-clustere + clustered)๊ฐ ์ดํด๊ฐ ์ ์๋จ.
Index๋?
- ์์ธ(์ด๋ค ๊ฒ์ ๋ค์ ธ์ ์ฐพ์๋ด๊ฑฐ๋ ํ์ํ ์ ๋ณด๋ฅผ ๋ฐํ = ์ฐพ์๋ณด๊ธฐ)
- ๋ฐ์ดํฐ๊ฐ ์๋ ์์น๋ฅผ ํน์ ํ ์ ์๋ ์ ๋ณด
- ๋ฐฐ์ด์ ์ธ๋ฑ์ค, ์ฑ ์ ๋ชฉ์ฐจ, ์ฑ ๋ค์ ์ฐพ์๋ณด๊ธฐ ๋ฑ
์ฑ ์ Index ์ฌ์ฉ ๋ชฉ์ โ ์ ๋ง์ ํ์ด์ง ์ค ์์๋ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด์,
๋ฐ์ดํฐ๋ฒ ์ด์ค์ Index ์ฌ์ฉ ๋ชฉ์ โ ๋์ฉ๋ ๋ฐ์ดํฐ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ๊ธฐ ์ํด์์ด๋ค.
์ธ๋ฑ์ค์ ์์ฑ/์ญ์
- ์ธ๋ฑ์ค๋ ๊ฒฐ๊ตญ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ด๋ค. ์ฆ ์ ์ฅ๊ณต๊ฐ์ ํ์๋ก ํ๋ค. (๋ณดํต ์ ์ฅ๋ ๋ฐ์ดํฐ์ 10%๊ฐ ํ์ํ๋ค๊ณ ํจ)
- ์ค๋ผํด, DB2 ๋ฑ์์๋ ์คํค๋ง ๊ฐ์ฒด์ด๋ฉฐ MySQL, SQL Server ๋ฑ์์๋ ํ ์ด๋ธ ๋ด์ ๊ฐ์ฒด์ด๋ค.
์ฌ์ฉ๋ฒ

๋ค์ค ์ปฌ๋ผ ์ธ๋ฑ์ค : ์ปฌ๋ผ๋ช ์ ์ฌ๋ฌ๊ฐ ์ง์ ํ ์ ์๋ค.
์ด๋ฉ์ผ, ์ด๋ฆ, ์ฃผ์ ์์๋ก ๋ค์ค์ปฌ๋ผ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ ๋์ ์ด๋ฆ, ์ฃผ์, ์ด๋ฉ์ผ ์์๋ก ๋ค์ค์ปฌ๋ผ ์ธ๋ฑ์ค๋ฅผ ์ง์ ํ์ ๋๋ ๋ค๋ฅด๋ค. ์์์ ๋ฐ๋ผ ์ด ์ธ๋ฑ์ค์ ํจ์จ์ด ๋ฌ๋ผ์ง ์ ์๋ค.
์ธ๋ฑ์ค ๊ฒ์์ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ
Full Table Scan
์ด๋ ์ด๋ฆ ๊ทธ๋๋ก ์ฒ์๋ถํฐ ๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฝ์ด ๋น๊ตํ๋ ๊ฒ์ด๋ค. ์ธ๋ฑ์ค๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์ปฌ๋ผ์ ์กด์ฌํ์ง ์์ ๋ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ๋ฒ์ด๋ค.
๊ผญ ์ธ๋ฑ์ค๊ฐ ๊ฑธ๋ ค ์๋ค๊ณ ํด์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๋๋ค. ํ์ง๋ง ์ธ๋ฑ์ค๊ฐ ๊ฑธ๋ ค์์ง ์๋๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก Full Table Scan์ ํ๊ฒ ๋๋ค.
B-Tree
์ธ๋ฑ์ค์์ ๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๋ ๋ง์ด ์์ง๋ง ๋๋ถ๋ถ B-Tree๋ฅผ ์ฌ์ฉํ๋ค.
B-ํธ๋ฆฌ๋ ์ด์ง ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์น๋ ๋ฌธ์ ์ ์ ๋ณด์ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. Balanced - Tree ๋ก ๋ ธ๋๋ฅผ 2๊ฐ ์ด์ ๊ฐ์ง ์๋ ์๊ณ , ๋์ด๊ฐ ํญ์ ๊ฐ์ ํธ๋ฆฌ์ด๋ค.
Clustered Index VS NON-Clustered Index
Cluster :๋ฌด๋ฆฌ, ๋ฌด๋ฆฌ๋ฅผ ์ด๋ฃจ๋ค, ์์๋ฅผ ๋ชจ์ ๋จ์์ฒด
Clustered Index : ๋ฐ์ดํฐ์ ๋ฌด๋ฆฌ๋ฅผ ์ด๋ฃฌ ์ธ๋ฑ์ค, ๊ตฐ์ง ์ธ๋ฑ์ค โ ์ฆ ์ธ๋ฑ์ค ์์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋จ
Non Clustered Index : ๋ฐ์ดํฐ์ ๋ฌด๋ฆฌ๋ฅผ ์ด๋ฃจ์ง ์์ ์ธ๋ฑ์ค ๋น ๊ตฐ์ง ์ธ๋ฑ์ค โ ์ธ๋ฑ์ค ์์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ง ์์.
Clustered Index
PK๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ ์์ด๋์๋ ์ด๋ฏธ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋์ด ์๋ค.
Pk๋ฅผ ์์ฑํ๋ฉด Clustered Index๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค. PK๊ฐ ๊ณง Clustered Index์ธ๊ฒ์ ์๋๊ณ Pk์ clustered index๋ ๋ฐ์ ํ ๊ด๋ จ์ด ์๋ค ์ ๋๋ก ์๊ฐํ์.
ํน์ง:
- ํ ์ด๋ธ๋น 1๊ฐ๋ง ์กด์ฌํ๋ค. (๋ง์ผ 2๊ฐ ์ด์์ด๋ผ๋ฉด ์ ๋ ฌ ๊ธฐ์ค์ด ๋ชจํธํด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
- PK ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์นผ๋ผ์ ์์ฑํ๋ฉฐ ์๋์ผ๋ก ์์ฑ๋๋ค
- ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ํ์ด์ง๊ฐ ํจ๊ป ์กด์ฌํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฆฌํํ์ด์ง๋ ๋ฐ์ดํฐํ์ด์ง์ ๊ฐ์ผ๋ฉฐ ๋ฐ์ดํฐ๋ ์ ๋ ฌ๋ ์ํ์์ ๋ปํ๋ค.
๊ตฌ์กฐ:

์๋ฅผ ๋ค์ด ์ ์ํฉ์์ DDD๋ฅผ ์ฝ์ ํ๋ค๊ณ ํ์. DDD์ ์์น๋ CCC ๋ค์์ด๋ฏ๋ก, ๋ฆฌํํ์ด์ง์ ๋ค์ด๊ฐ ๊ณต๊ฐ์ด ์๋ค. ๋ฐ๋ผ์ ํ์ด์ง๋ฅผ ๋ถํ ํด์ผ๋ง ํ๋ค.

ํ์ด์ง ๋ถํ ์ ์ค๋ฒํค๋๊ฐ ํฐ ์์ ์ด๋ค. ํ์ด์ง ๋ถํ ์ ์์ ๋งํ๋ update, insert delete์์ ์์ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์กฐํ ์ธ์์๋ ์ฑ๋ฅ์ด ์ ํ๋๋ค
์ฌ๊ธฐ์ ๋ค์ LLL์ ์ฝ์ ํ๋ ์ํฉ์ ์๊ฐํด ๋ณด์

์ด๋ฒ์๋ ๋ฃจํธํ์ด์ง์ ๊ณต๊ฐ์ด ๋ถ์กฑํ ํ์์ด ์ผ์ด๋๋ค.๋ฐ๋ผ์ ๋ฃจํธ ํ์ด์ง๋ฅผ ๋ถํ ํด์ฃผ๊ณ ๋ธ๋์น ํ์ด์ง๋ก ๋ง๋ค์ด์ค ํ ์๋ก์ด ๋ฃจํธ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ค๋ค.
๋ธ๋์น ํ์ด์ง๋ ๋ฃจํธํ์ด์ง์ ๋ฆฌํํ์ด์ง๋ฅผ ์ด์ด์ฃผ๋ ํ์ด์ง์ด๋ค.
์ด๋ฐ์์ผ๋ก ๋ฐธ๋ฐ์ค๋ฅผ ์ ์งํ๋ฉด์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃฌ๋ค.

์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข๋ ๊ฐ๊น์ด ๋ชจ์ต์ b-ํธ๋ฆฌ์ด๋ค. ๋ง์ผ G์ ํด๋นํ๋ ๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด Full Table Scan์ ๊ฒฝ์ฐ ๋น๊ต์ฐ์ฐ์ 7๋ฒ์ ๊ฑฐ์น๊ฒ ๋๋ค. ํ์ง๋ง b-ํธ๋ฆฌ์ ์ธ๋ฑ์ฑ์ ํ๋ค๋ฉด ๋จ ๋๋ฒ์ ์ฐ์ฐ์ผ๋ก ๊ฐ์ ์ฐพ์๋ผ ์ ์๋ค.
Non-Clustered Index (Secondary Index)
- ๋ณด์กฐ ์ธ๋ฑ์ค , ํ ์ด๋ธ์ ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌํ ์ ์์
- Unique ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์ปฌ๋์ ์์ฑํ๋ฉด ์๋์ผ๋ก ์์ฑ
- ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ํ์ด์ง๊ฐ ๋ฐ๋ก ์กด์ฌโ ์ฆ ๋ฆฌํํ์ด์ง์ ๋ ํผ๋ฐ์ค, ๋ฐ์ดํฐ๊ฐ ์๋ ๊ณณ์ ์ฃผ์๊ฐ์ด ์์!
- ๋ฐ์ดํฐ ํ์ด์ง์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ง ์์๋ ๋จ
- Clustered Index์ ๋น๊ตํด์ ์กฐํ์๋๊ฐ ์ฝ๊ฐ ๋๋ฆฌ์ง๋ง Insert, Update, Delete ์ ์ค๋ฒํค๋๊ฐ ์ ์.

Clustered Index + Non Clustered Index

์๊ฐ non clustered index, ์๋๊ฐ clustered Index์ด๋ค.
์ดํด๊ฐ ์๋จ โ ์ถ๊ฐ๋ก ๋ค๋ฅธ์๋ฃ ๊ฒ์ํ์
์นด๋๋๋ฆฌํฐCardinality

ex) ์ฑ๋ณ vs Email vs ์ด๋ฆ
์ฑ๋ณ์ ๋จ ๋๊ฐ์ง๋ค. ๋ง์ผ ์ธ๋ฑ์ค๋ฅผ ์ฑ๋ณ์ ๊ฑด๋ค๋ฉด ๋จ์์ ์ฌ์ ๋จ ๋๊ฐ๋ก ๋๋๊ณ ๊ทธ ์์์ ์์ฒญ๋๊ฒ ๋ง์ ๋ฆฌํํ์ด์ง๋ค์ด ๋ฐ์ํ ๊ฒ์ด๋ค.
์ด๋ฉ์ผ์ด ๊ฐ์ฅ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ํจ์จ์ด ์ข๋ค.
์นด๋๋๋ฆฌํฐ๊ฐ ๋๋ค๋ ๊ฒ์ ์ค๋ณต๋ ์์น๊ฐ ๋ฎ์ ๊ฒ์ ์๋ฏธ.
์นด๋๋๋ฆฌํฐ๊ฐ ๋์ ์นผ๋ผ์ ์ธ๋ฑ์ค๋ก ์ก์์ผํ๋ค.
์ธ๋ฑ์ค ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ

์ธ๋ฑ์ค๋ Where์ ์์ ์ฌ์ฉ๋๋ค.
- ์ฌ์ฉํ์ง ์๋ ์ธ๋ฑ์ค๋ ์ญ์ ํ๋ ๊ฒ์ด ์ข๋ค(Insert, Update, Delete ์ฑ๋ฅ์ ํ๋ฅผ ๋ฐฉ์ง)
- ์ธ๋ํค๋ฅผ ์ง์ ํ ์ด์๋ ์๋์ผ๋ก ์ธ๋ํค ์ธ๋ฑ์ค๊ฐ ์์ฑ๋๋ค.
- where์ ์ ์ฐ๋๋ผ๋ ์์ฃผ ์ฌ์ฉ๋ผ์ด์ผ ์ธ๋ฑ์ค์ ๊ฐ์น๊ฐ ์๋ค.
- Where ์ ์ ์นผ๋ผ์ ์ฐ์ฐ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.(๋ค๋ฅธ ํจ์๋ฅผ ์ ์ฉํ์ ์์๋ ๊ฒ์์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ง ์๋๋ค.)

๋๊ธ๋จ๊ธฐ๊ธฐ