= ์ฑ ์ ์์ธ -> ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค์์๋ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ฒ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ํฌํจํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑ(์ธ๋ฑ์ค๋ฅผ ์์ฑ)ํ์ฌ ํจ์จ์ ์ธ ์กฐํ๊ฐ ๊ฐ๋ฅ
- ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ฉด ์กฐํ๊ฐ ํ์ํ ๋ช ๋ น์ด(SELECT, UPDATE, DELETE ๋ฑ)์ ์ฑ๋ฅ์ด ํฅ์
- DBMS๋ ํญ์ index๋ฅผ ์ต์ ์ ์ํ๋ก ์ ์งํ๋ค. ์ด๋ฅผ ์ํด ์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋ ๊ฐ ์ฐ์ฐ(INSERT, UPDATE, DELETE ๋ฑ)์ด ์ํ๋๋ฉด ๊ทธ์ ๋ฐ๋ผ ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋(overhead)๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๋ค.
- ์ ๋ฐ์ ์ธ ์์คํ ์ ๋ถํ๋ฅผ ๊ฐ์์ํจ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ํตํด ํ ์ด๋ธ์ ์กฐํํ๋ ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์๋ค.
ex
- WHERE์ ์ ํตํ ์กฐ๊ฑด ๊ฒ์ ์์ ์๋ ํ ์ด๋ธ์ WHERE์ ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด์๋ *Full Table Scan์ด ํ์ํ๋ค. ํ์ง๋ง Index Table์์๋ ์ธ๋ฑ์ค๋ค์ด ์ด๋ฏธ ์ ๋ ฌ๋์ด ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ค์ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
- *ORDER BY์ ์ ํตํ ์ ๋ ฌ ORDER BY๋ ๊ฐ์ฅ ๋ถํ๊ฐ ๋ง์ด ๊ฑธ๋ฆฌ๋ ์ฐ์ฐ์ด๋ค. ํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ ์ ๋ ฌ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ORDER BY์ฐ์ฐ ์์ ์์ฒด๋ฅผ ํผํ ์ ์๋ค.
- Min, Max์ ํจ์จ์ ์ธ ์ฒ๋ฆฌ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ฒ์ ๊ฐ๊ณผ ๊ฐ์ฅ ๋์ ๊ฐ๋ง ๊ฐ์ ธ์ค๋ฉด ํจ์จ์ ์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
ORDER BY - ๋ด๋ฆผ์ฐจ์ ํน์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ค์ด ํ์ํ ๋ ์ฌ์ฉํ๋ ์ฐ์ฐ
- ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด DB์ ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ๋ค.
INSERT, UPDATE, DELETE์ ๊ฐ์ ์ฐ์ฐ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์์ ,์ญ์ , ์ฝ์ ๋์์ ๋ ์ ๋ ฌ์ ๋ค์ ํด์ค์ผ ํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์๋ชป ์ฌ์ฉ ํ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ํ์ ์ญํจ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค.
UPDATE, DELETE์ ๊ฐ์ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์กด์ฌํ๋ ์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๋๊ฒ ์๋ ์ฌ์ฉํ์ง ์์์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, DELETE์ ๊ฐ์ ์ฐ์ฐ์ด ์์๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ ์ธ๋ฑ์ค๊ฐ ์์ฒญ๋๊ฒ ๋ถ์ด๋ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.
- ํ ์ด๋ธ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ธ๋ฑ์ค ์ค์บ ์ฌ์ฉ ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋ค.
๋ง์ฝ ํ ์ด๋ธ์ด ๋งค์ฐ ์์ ๊ฒฝ์ฐ ๊ตณ์ด ์ธ๋ฑ์ค ์ค์บ์ ์ฌ์ฉํ์ง ์์๋ FULL SCAN์ด ๋ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค ์ค์บ์ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
- ์กฐ๊ฑด์ (WHERE)์ด ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ
- ==์ผ๋ก ๋น๊ต๋๋ ์ปฌ๋ผ
- ์ค๋ณต๋๋ ๋ฐ์ดํฐ๊ฐ ์ต์ํ์ผ ๋
- ORDER BY์ ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ
- JOIN์กฐ๊ฑด์ผ๋ก ์์ฃผ ์ฌ์ฉ๋๋ ์ปฌ๋ผ
ํด์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋น ๋ฅธ ๋ฐ์ดํฐ ๊ฒ์์ด ํ์ํ ๋ ์ฌ์ฉํ๋ค. ํด์ ํ ์ด๋ธ์ ๋ถ์ key๊ฐ์ ์ด์ฉํด ๊ณ ์ ํ index๋ฅผ ์์ฑํ์ฌ ๊ทธ index ์ ์ฅ๋ ๊ฐ์ ๊บผ๋ด์ค๋ ๋ฐฉ์
ํด์ ํ ์ด๋ธ ๊ธฐ๋ฐ์ db์ธ๋ฑ์ค
key, value = ์ปฌ๋ผ์ ๊ฐ, ๋ฐ์ดํฐ์ ์์น
-> ์ปฌ๋ผ์ ๊ฐ์ผ๋ก ์์ฑ๋ ํด์, ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋ = O(1)
๊ทธ๋ฌ๋ Hash Table์ ์ฌ์ฉ์ด ์ ํ์
-> ํด์๋ ๋ฑํธ(==) ์ฐ์ฐ๋ง ์ํ ๊ฐ๋ฅ, ์ด๋๋ฌธ์ ๋ถ๋ฑํธ ์ฐ์ฐ์ด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ฒ์์๋ ํด์ ํ ์ด๋ธ ์ฌ์ฉ x
B-Tree๋ ์์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์์ธ ํธ๋ฆฌ.
์ด์ง๊ฒ์ ํธ๋ฆฌ์ฒ๋ผ ๊ฐ Key์ ์ผ์ชฝ ์์์ ํญ์ Key๋ณด๋ค ์์ ๊ฐ์, ์ค๋ฅธ์ชฝ ์์์ ํฐ ๊ฐ์ ๊ฐ์ง๋ค.
- ๋ ธ๋ ํ๋์ ์ฌ๋ฌ ๋ฐ์ดํฐ ์ ์ฅ
- ๊ฐ ๋ ธ๋์ ์๋ ๋ฐ์ดํฐ๋ ํญ์ ์ ๋ ฌ๋ ์ํ, ๋ ธ๋์ ์ ์ฅ๋ ๋ฒ์๋ฅผ ์ฌ์ฉํด ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง (n+1)
- ๊ฐ ๋ ธ๋์๋ ์ฌ๋ฌ๊ฐ์ key๋ฅผ ๊ฐ์ง๊ณ ๊ฐ key์ ๋์ํ๋ data๋ ํจ๊ป ๊ฐ์ง
- ํญ์ ์ ๋ ฌ๋ ์ํ๋ก ๋ถ๋ฑํธ ์ฐ์ฐ์ ๋ฌธ์ x
- pointer ์ ๊ทผ์ด ์๋ ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋์คํฌ์์ ๋ค์ ์ธ๋ฑ์ค๋ก ์ ๊ทผ
- ๊ทธ๋ฌ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ์ ๋นํจ์จ์ -> ์ด๋ฅผ ๊ฐ์ ํ ๊ฒ์ด B + tree
์๊ฐ ๋ณต์ก๋ = O(logn)
DB์ ์ธ๋ฑ์ค๋ฅผ ์ํด ์์๋ ธ๋๊ฐ 2๊ฐ ์ด์์ธ b-tree๋ฅผ ๊ฐ์ ์ํจ ์๋ฃ๊ตฌ์กฐ
- ๋ฐ์ดํฐ ๋ ธ๋๋ง ์ธ๋ฑ์ค์ ํจ๊ป ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋ค.
- ์ธ๋ฑ์ค ๋ ธ๋๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ํ ์ธ๋ฑ์ค๋ง์ ๊ฐ์ง๋ค.
- ๋ฐ์ดํฐ ๋ ธ๋ ํฌ๊ธฐ๋ ์ธ๋ฑ์ค ๋ ธ๋์ ํฌ๊ธฐ์ ๊ฐ์ง ์์๋ ๋๋ค.
- ๋ฆฌํ ๋ ธ๋๋ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ฐ๊ฒฐ, ์์ฐจ๊ฒ์ ์ฉ์ด
์๊ฐ๋ณต์ก๋ = O(log2๐(2์ n))