๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค - ์ธ๋ฑ์ค๋ ๋ฌด์์ด๊ณ ์ผ๋ฐ์ ์ธ ์๋ฆฌ๋ ์ด๋ ํ์ง ์ค๋ช ํ์์ค.
์ธ๋ฑ์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ์ ์ฃผ์๋ฅผ ์ ์ฅํด ๊ฒ์ ๋ฅ๋ ฅ์ ํฅ์ ์์ผ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ
์ฆ, ๋ฐ์ดํฐ ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ
๋ง์น ์ฑ ์ ๋ชฉ์ฐจ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐ ๋์์ด ๋๋ ๋๊ตฌ๋ก, ํน์ ์ปฌ๋ผ์ด๋ ์ฌ๋ฌ ์ปฌ๋ผ์ ๋ํด ๊ฒ์์ ์ต์ ํํ ์ ์๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ ๋ง์ ์๊ฐ์ด ์์๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ํฌํจํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑํด ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋๋ก ํ๋ค.
๋ง์ฝ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์กฐํํ ์์๋ ํ ์ด๋ธ ์ ์ฒด๋ฅผ ํ์ํ๋
Full Scan
์ด ์ํ๋จ์ผ๋ก์จ ์ฒ๋ฆฌ ์๋๊ฐ ๋จ์ด์ง๊ฒ ๋๋ค.
์ผ๋ฐ์ ์ธ ์๋ฆฌ
์๋ฃ ๊ตฌ์กฐ
์ธ๋ฑ์ค๋ ์ฃผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ(๋ณดํต B-ํธ๋ฆฌ)๋ก ๊ตฌํ๋๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฒ์ํ ์ ์๋๋ก ํด์ค๋ค. ์๋ฅผ ๋ค์ด, B-ํธ๋ฆฌ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ํธ๋ฆฌ์ ๊น์ด๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ํ์ํ๋ ๋ฐฉ์์ผ๋ก ์๊ฐ ๋ณต์ก๋ O(log N)์ผ๋ก ์ค์ฌ์ค๋ค.
๋ฐ์ดํฐ ๊ฒ์ ์ต์ ํ
DB์์ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ์ ์ฒด ํ ์ด๋ธ์ ๊ฒ์ํด์ผ ํ๋ฏ๋ก ๊ฒ์ ์๋๊ฐ ๋๋ ค์ง๋ค. ํ์ง๋ง ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ด์ง ํ์(binary search) ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ค.
๋น ๋ฅธ ์ ๊ทผ
์ธ๋ฑ์ค๋ ํด๋น ์ปฌ๋ผ์ ๊ฐ์ ์ ๋ ฌํ๊ฑฐ๋ ํด์๊ฐ์ ์ฌ์ฉํด ๋น ๋ฅธ ๊ฒ์์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. ์๋ฅผ ๋ค์ด WHERE
์ ์ ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ด๋ JOIN
์ ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฉํ๋ฉด ๊ฒ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ค.
์ฅ์
๊ฒ์ ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
ํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ ์กฐํ ์ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
JOIN
๊ณผORDER BY
์ฟผ๋ฆฌ์์ ์ฑ๋ฅ์ด ๊ฐ์ ๋๋ค.
๋จ์
์ธ๋ฑ์ค ์์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ ์ถ๊ฐ์ ์ธ ๊ณต๊ฐ๊ณผ ์๊ฐ์ด ์์๋๋ค.
๋ฐ์ดํฐ ์ฝ์ , ์ญ์ , ์์ ์ ์ธ๋ฑ์ค๋ ์ ๋ฐ์ดํธํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ ์ ํ๊ฐ ์์ ์ ์๋ค.
์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ
๊ท๋ชจ๊ฐ ์์ง ์์ ํ ์ด๋ธ
INSERT
,UPDATE
,DELETE
๊ฐ ์์ฃผ ๋ฐ์ํ์ง ์๋ ์ปฌ๋ผJOIN
,WHERE
,ORDER BY
์ ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ๋ฐ์ดํฐ์ ์ค๋ณต๋๊ฐ ๋ฎ์ ์ปฌ๋ผ
๋ชจ๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์ง ์๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด INSERT, DELETE, UPDATE ์ฟผ๋ฆฌ๋ฌธ์ ์คํํ ๋ ๋ณ๋์ ๊ณผ์ ์ด ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ค. INSERT์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค์ ๋ํ ๋ฐ์ดํฐ๋ ์ถ๊ฐํด์ผ ํ๋ฏ๋ก ๊ทธ๋งํผ ์ฑ๋ฅ ์์ค์ด ์๊ธด๋ค. DELETE์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค์ ์กด์ฌํ๋ ๊ฐ์ ์ญ์ ํ์ง ์๊ณ ์ฌ์ฉ ์ํ๋ค๋ ํ์๋ก ๋จ๊ฒ๋๋ค.
๋ฐ๋ผ์ ROW์ ์๋ ๊ทธ๋๋ก์ธ๋ฐ ์ด๋ฌํ ์์ ์ด ๋ฐ๋ณต๋๋ฉด ์ค๋ฐ์ดํฐ๊ฐ 10๋ง๊ฑด์ธ๋ฐ ๋ฐ์ดํฐ๊ฐ 100๋ง๊ฑด์ด ์๋ ๊ฒฐ๊ณผ๊ฐ ์๊ธธ ์ ์๋ค.
UPDATE์ ๊ฒฝ์ฐ INSERT, DELETE์ ๋ฌธ์ ์ ์ ๋์์ ์๋ฐํ๋ค. ์ด์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๊ณ ๊ทธ ์๋ฆฌ์ ์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ปฌ๋ผ์ ์ด๋ฃจ๊ณ ์๋ ๋ฐ์ดํฐ์ ํ์์ ๋ฐ๋ผ์ ์ธ๋ฑ์ค์ ์ฑ๋ฅ์ด ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.
์ฆ, ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์ ๊ฒ์ํ๋ ์๋์ ์ฑ๋ฅ์ด ํฅ์๋๋ ์ฅ์ ์ด ์กด์ฌํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ถ๊ฐ ์์ ์ด ํ์ํ๋ฉฐ ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ ๋ํ ํ์ํ๋ค. ๋ฐ์ดํฐ์ ํ์์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๊ณ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋ ์ปฌ๋ผ์ ์ฝ์ , ์ญ์ , ์์ ์ด ์ฆ๋ค๋ฉด ์ธ๋ฑ์ค ๋ํ ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ๋ฎ์์ง๋ค. ๋ํ ์ธ๋ฑ์ค๋ ์ ๊ฑฐ๋๋ ๊ฒ์ด ์๋ โ์ฌ์ฉํ์ง ์์โ์ผ๋ก ๋จ๊ฒจ๋๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๊ฐ ๊ณผ๋ํ๊ฒ ์ปค์ง ์ ์๊ธฐ์ ๋ชจ๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์ง ์๋๋ค.
๋ณตํฉ์ธ๋ฑ์ค๋?
DB์์ ์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ๋ค์ ์กฐํฉํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งํ๋ค.
๋จ์ผ ์ธ๋ฑ์ค(Single Index)๊ฐ ํ ๊ฐ์ ์ปฌ๋ผ์ ๋ํด ์์ฑ๋๋ ๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ, ๋ณตํฉ ์ธ๋ฑ์ค๋ ์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค.
๋ณตํฉ ์ธ๋ฑ์ค ์ฅ์
์์๋ก ํ์ ์ ๋ณด์ DB์์ ํ์ ์ด๋ฆ๊ณผ ํ๋ฒ์ ๊ฒ์ํ๋ ๊ฒฝ์ฐ ๋จ์ผ ์ธ๋ฑ์ค๋ก ์ด๋ฆ๊ณผ ํ๋ฒ์ ๋ชจ๋ ์ธ๋ฑ์ฑํ๋ค๋ฉด DB๋ ์ธ๋ฑ์ค์ ํด๋น๋๋ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ๊ณ ํํฐ๋งํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ์์๋๋ค.
ํ์ง๋ง ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฆ๊ณผ ํ๋ฒ ์ด์ ํตํฉํ์ฌ ํ๋์ ์ธ๋ฑ์ค๋ก ๋ง๋ค ์ ์๋ค. ์ด๋ก์ธํด ๋ ๋น ๋ฅด๊ฒ ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ ์ ์๊ฒ ๋๋ค.
์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ์ ๋์์ ๊ฒ์ํ ์ ์์ด์ ๊ฒ์ ์๋๊ฐ ๊ฐ์ ๋๋ค.
์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ์ฌ๋ฌ ๊ฐ์ ์ปฌ๋ผ์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ธ๋ฑ์ค์ ์ฉ๋์ด ์ค์ด๋ ๋ค.
์ฟผ๋ฆฌ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์์ ๋ ์ต์ ํ๋ ์คํ ๊ณํ์ ์๋ฆฝํ ์ ์๋ค.
๋ณตํฉ ์ธ๋ฑ์ค ์ปฌ๋ผ ์ ํ
where์ ์์ and ์กฐ๊ฑด์ผ๋ก ์์ฃผ ๊ฒฐํฉ๋์ด ์ฌ์ฉ๋๋ฉด์ ๊ฐ๊ฐ์ ๋ถํฌ๋ ๋ณด๋ค ๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ด ๊ฒฐํฉ๋ ๋ ๋ถํฌ๋๊ฐ ์ข์์ง๋ ์ปฌ๋ผ๋ค
๋ค๋ฅธ ํ ์ด๋ธ๊ณผ ์กฐ์ธ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ก ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ๋ค
order by์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ๋ค
ํ๋ ์ด์์ ํค ์ปฌ๋ผ ์กฐ๊ฑด์ผ๋ก ๊ฐ์ ํ ์ด๋ธ์ ์ปฌ๋ผ๋ค์ด ์์ฃผ ์กฐํ๋ ๋
์ ๋ฆฌ
์ธ๋ฑ์ค๋ DB์์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๊ธฐ ์ํ ์๋ฃ ๊ตฌ์กฐ๋ก, ์ฃผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ(B-ํธ๋ฆฌ)๋ก ๊ตฌํ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ํ ์ด๋ธ์ ๊ฒ์ํ์ง ์๊ณ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค. ์ฃผ๋ก
WHERE
์ ์ด๋JOIN
์ ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ ์ ์ฉ๋๋ฉฐ, ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ฌ๋ฌ ์กฐ๊ฑด์ ๋์์ ์ต์ ํํ ์ ์๋ค. ๊ทธ๋ฌ๋ ์ธ๋ฑ์ค๋ ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ์ ์๊ตฌํ๊ณ ๋ฐ์ดํฐ ์ฝ์ , ์ญ์ , ์์ ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐฑ์ ํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.