์ธ๋ฑ์ค(Index)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ํน์ ์ด(๋๋ ์ฌ๋ฌ ์ด)์ ๋ํ ์ ๋ ฌ๋ ํค์ ํด๋น ํค๊ฐ ๊ฐ๋ฆฌํค๋ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋์ ์์น๋ฅผ ๋งคํํฉ๋๋ค. ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒ์ ์ฐ์ฐ ์๋๋ฅผ ํฅ์์ํค๊ณ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.


์ธ๋ฑ์ค์ ์ฃผ์ ํน์ง๊ณผ ์ญํ
- ๊ฒ์ ์๋ ํฅ์: ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ๊ฒ์ ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. ํนํ ๋๋์ ๋ฐ์ดํฐ๊ฐ ์๋ ํ ์ด๋ธ์์ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๊ฒ์์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค.
- ์ ๋ ฌ ๋ฐ ์ ์ผ์ฑ ์ ์ง: ์ธ๋ฑ์ค๋ ํน์ ์ด์ ๋ํด ์ ๋ ฌ๋ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋ฉฐ, ํ์์ ๋ฐ๋ผ ํด๋น ์ด์ ๊ฐ์ด ์ ์ผํ๋๋ก ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ ์ฃผ๋ก ๊ธฐ๋ณธ ํค๋ ๊ณ ์ ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์กฐ์ธ ์ฑ๋ฅ ํฅ์: ์ธ๋ฑ์ค๋ ์กฐ์ธ ์ฐ์ฐ์ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ์์ ์กฐ์ธ ์ฐ์ฐ์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ๋ ํจ์จ์ ์ผ๋ก ์ํ๋ ์ ์์ต๋๋ค.
- WHERE ์กฐ๊ฑด ์ต์ ํ: ์ธ๋ฑ์ค๋ WHERE ์กฐ๊ฑด์์ ์ฌ์ฉ๋๋ ์ด์ ๋ํ ๊ฒ์์ ์ต์ ํํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค. ์ด๋ ํนํ SELECT ๋ฌธ์์ WHERE ์ ์ด ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค.
B-ํธ๋ฆฌ(B-tree) ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ธ๋ฑ์ค
๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์์๋ B-ํธ๋ฆฌ(B-tree) ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. B-ํธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๋ ฌํ๊ณ ํ์ํ๊ธฐ ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค์ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค.

๋ํ์ ์ผ๋ก MySQL, PostgreSQL, Oracle, SQL Server ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์๋ B-ํธ๋ฆฌ ๊ธฐ๋ฐ์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช๋ช ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํน์ ์ํฉ์ด๋ ์๊ตฌ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
๋ฌด๋ฆฌํ๊ฒ ๋ง์ ์ธ๋ฑ์ค ์์ฑ์ ๋จ์
๊ทธ๋ฌ๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ๋๋ ๋ช ๊ฐ์ง ๊ณ ๋ ค ์ฌํญ์ด ์์ต๋๋ค. ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ ์ฝ์ , ์์ , ์ญ์ ์์ ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฉฐ, ๊ณผ๋ํ ์ธ๋ฑ์ค ์์ฑ์ ๋์คํฌ ๊ณต๊ฐ์ ๋ญ๋นํ ์ ์์ต๋๋ค. ์ ์ ํ ์ธ๋ฑ์ค ์ ๋ต์ ์ ํํ๊ณ ์ ์ง๋ณด์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- table์ writeํ ๋๋ง๋ค index๋ ๋ณ๊ฒฝ ๋ฐ์
- ์ถ๊ฐ์ ์ธ ์ ์ฅ ๊ณต๊ฐ ์ฐจ์ง
Covering Index (์ปค๋ฒ๋ง ์ธ๋ฑ์ค)
Covering Index๋ ์ฟผ๋ฆฌ์ ์คํ์ ์ํด ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค ์์ฒด์์ ์ ๊ณตํ๋ ์ธ๋ฑ์ค์ ํํ๋ฅผ ๋ํ๋
๋๋ค. ์ฆ, ์ปค๋ฒ๋ง ์ธ๋ฑ์ค๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋์คํฌ์์ ํ
์ด๋ธ๋ก ์ด๋ํ์ง ์๊ณ ๋ ์ธ๋ฑ์ค๋ง์ผ๋ก ์ํ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ธ๋ฑ์ค๋ ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋์ง๋ง, ๋ง์ฝ ์ฟผ๋ฆฌ์์ ์ ํ๋ ์ด๊ณผ ํ์ํ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ธ๋ฑ์ค์ ํฌํจ๋์ด ์๋ค๋ฉด, ํ
์ด๋ธ์ ์ค์ ๋ก ์กฐํํ์ง ์๊ณ ๋ ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ปค๋ฒ๋ง ์ธ๋ฑ์ค๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
- ๊ฒ์ ์ฑ๋ฅ ํฅ์: ํ ์ด๋ธ์ ๋ํ ๋์คํฌ I/O๋ฅผ ํผํ๊ณ ์ธ๋ฑ์ค๋ง์ผ๋ก ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ผ๋ฏ๋ก ๊ฒ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์ ์ก ์ต์ํ: ํ์ํ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ธ๋ฑ์ค์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฐ์ดํฐ ์ ์ก์ด ์ต์ํ๋์ด ๋คํธ์ํฌ ๋น์ฉ๊ณผ ๋์ญํญ์ ์ ์ฝํ ์ ์์ต๋๋ค.
ํด์ ์ธ๋ฑ์ค(Hash Index)
ํด์ ์ธ๋ฑ์ค(Hash Index)๋ ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ์ธ๋ฑ์ค ๊ตฌ์กฐ์
๋๋ค. ํด์ ํจ์๋ ๊ณ ์ ํ ์
๋ ฅ์ ๋ํด ๊ณ ์ ํ ํด์ ๊ฐ์ ์์ฑํ๋ ํจ์๋ก, ์ด ํด์ ๊ฐ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํฉ๋๋ค. ํด์ ์ธ๋ฑ์ค๋ ํนํ ๋ฑ ๊ฐ์ด ์ผ์นํ๋ ๊ฒฝ์ฐ์ ๊ฒ์์ด ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง๋ ํน์ฑ์ด ์์ต๋๋ค.
ํด์ ์ธ๋ฑ์ค์ ํน์ง๊ณผ ๋์ ๋ฐฉ์
- ๊ณ ์ ๊ฒ์
- ๋ฑ ๊ฐ ์ฒ๋ฆฌ: ํด์ ์ธ๋ฑ์ค๋ ๋ฑ ๊ฐ(๋์ผํ ํด์ ๊ฐ)์ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ ์ฉ
- ๋ฑ ๊ฐ ์ถฉ๋: ํด์ ํจ์๊ฐ ์๋ก ๋ค๋ฅธ ์ ๋ ฅ์ ๋ํด ๊ฐ์ ํด์ ๊ฐ์ ์์ฑํ ์ ์๋ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฒ์ ๊ฒ์์ ์ด๋ ค์: ํด์ ์ธ๋ฑ์ค๋ ํน์ ๊ฐ์ ๋ํ ๊ฒ์์ ํจ๊ณผ์ ์ด์ง๋ง, ๋ฒ์ ๊ฒ์(์: "๋ฒ์ ๋ด์ ๊ฐ ์ฐพ๊ธฐ")์๋ ์ ํฉํ์ง ์์ต๋๋ค.
์ฃผ์ํ ์ ์ ํด์ ์ธ๋ฑ์ค๋ ์ฃผ๋ก ๋ฑ ๊ฐ ์ฒ๋ฆฌ๊ฐ ๋ง์ ๊ฒฝ์ฐ๋ ํน์ ๊ฒ์ ํจํด์ด ์์ธก ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ฉฐ, ๋ฐ์ดํฐ์ ๋ถํฌ์ ์ถฉ๋์ ๋ํ ๊ด๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ InnoDB์ ๊ฐ์ ์คํ ๋ฆฌ์ง ์์ง์์๋ ํด์ ์ธ๋ฑ์ค๋ฅผ ์ง์ํ์ง ์๊ฑฐ๋ ์ ํ์ ์ผ๋ก ์ง์ํ ์ ์์ต๋๋ค.
An index is a data structure in a database that enhances the speed of data retrieval operations on a table by providing a quick and efficient way to locate and access specific rows based on the values in one or more columns.
'Computer Science > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
25 NoSQL (0) | 2024.01.18 |
---|---|
20 Normalization (0) | 2024.01.16 |
12 Trigger (0) | 2024.01.13 |
9 ORDER BY, GROUP BY (feat. HAVING) (0) | 2024.01.12 |
8 JOIN (0) | 2024.01.12 |
๋๊ธ