์ธ๋ฑ์ค(Index) ๋?
์ธ๋ฑ์ค(Index)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ์ด(์นผ๋ผ)์ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค.
์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ ๋ด์ ํน์ ์ด์ ๋ํ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ๊ณตํ์ฌ ๊ฒ์ ๋ฐ ์กฐํ ์์ ์ ๋ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๊ฒ ํด์ค๋๋ค.
Index๊ฐ ํ์ํ ์ด์
Index๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ table์ ๊ฒ์ ์ฑ๋ฅ์ ๋์ฌ์ฃผ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค.
์ผ๋ฐ์ ์ธ RDBMS(๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค)์์๋ B+Tree๊ตฌ์กฐ๋ก ๋ index๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์์๋๋ฅผ ํฅ์์ํต๋๋ค.
index๋ ์ฑ ๋ง๋ค ๋ง์ง๋ง ํ์ด์ง์ ์๋ ์์ธ(index)๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
์ฑ ์์ ์ด๋ค ์ฉ์ด๋ ๋จ์ด๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฒซ ํ์ด์ง๋ถํฐ ๋ ํ์ด์ง๊น์ง ์ ์ฒด๋ฅผ ํ์ง ์์๋(Full Table Scan) index๋ฅผ ์ฐพ์๋ณด๋ฉด ๋ช ํ์ด์ง์ ์ ํ ์๋์ง ๋ฐ๋ก ์ฐพ์ ์ ์๋ ๊ฒ(Index Scan)๊ณผ ๋น์ทํฉ๋๋ค.
SELECT ~ WHERE query๋ฅผ ํตํด ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋, full table scanํ ํ์ ์์ด ์ ๋ ฌ๋์ด ์๋ index์์ ํจ์ฌ ๋น ๋ฅธ ์๋๋ก ๊ฒ์ํ ์ ์๊ฒ ๋ฉ๋๋ค.
Index ๊ตฌ์กฐ
Index๋ Btree, B+tree, Hash, Bitmap๋ก ๊ตฌํ๋ ์ ์์ต๋๋ค.
๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ index๋ B+tree๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค.
index๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ํน์ column(์์ฑ, attribute)์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์์น์ ํจ๊ป ๋ณ๋ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
์ด ๋, Index์ ์ ์ฅ๋๋ ์์ฑ ๊ฐ์ search-key๊ฐ์ด๋ผ ํ๊ณ ์ค์ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์์น๋ฅผ ์ ์ฅํ ๊ฐ์ pointer๋ผ๊ณ ํฉ๋๋ค.
์ฆ, index๋ ์์๋๋ก ์ ๋ ฌ๋ search-key๊ฐ๊ณผ pointer๊ฐ๋ง ์ ์ฅํ๊ธฐ ๋๋ฌธ์ table๋ณด๋ค ์ ์ ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค.
์ ๋ฆฌํด๋ณด๋ฉด ํน์ column์ search-key ๊ฐ์ผ๋ก ์ค์ ํ์ฌ index๋ฅผ ์์ฑํ๋ฉด, ํด๋น search-key ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ (search-key, pointer)๋ฅผ ๋ณ๋ ํ์ผ์ ์ ์ฅํฉ๋๋ค.
์ด๋ฅผ index๋ผ๊ณ ํฉ๋๋ค.
Index ์ฌ์ฉํ๋ ์ด์
Table์ ๋ฐ์ดํฐ๋ฅผ ์ง์์ ์ผ๋ก ์ ์ฅํ๊ฒ ๋๋ฉด ๋ด๋ถ์ ์ผ๋ก ์์ ์์ด ์์ด๊ฒ ๋ฉ๋๋ค.
์ด ๊ฒฝ์ฐ์ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ ์ WHERE์ ์ ์ฌ์ฉํ๋ค๋ฉด Table์ row(record)๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ๋ชจ๋ ์ ๊ทผํ์ฌ ๊ฒ์ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋์ง ๋น๊ตํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค.
์ด๋ฅผ Full Table Scan์ด๋ผ๊ณ ํฉ๋๋ค.
ํ์ง๋ง ํน์ coloumn์ ๋ํ Index๋ฅผ ์์ฑํด ๋์ ๊ฒฝ์ฐ ํด๋น ์์ฑ์ ๋ํ์ฌ search-key๊ฐ ์ ๋ ฌ๋์ด ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด ๊ฒ์(SELECT ~ WHERE) ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฆ ๋๋ค.
ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ๋ณด์กฐ ์ธ๋ฑ์ค(clustering index & secondary index)
ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค (clustering index) |
ํน์ column์ ๊ธฐ๋ณธํค(primary key)๋ก ์ง์ ํ๋ฉด ์๋์ผ๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋๊ณ , ํด๋น column ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ด ๋ฉ๋๋ค. Table ์์ฒด๊ฐ ์ ๋ ฌ๋ ํ๋์ index์ธ ๊ฒ์ ๋๋ค. ๋ง์น ์์ด์ฌ์ ์ฒ๋ผ ์ฑ ์ ๋ด์ฉ ์์ฒด๊ฐ ์ ๋ ฌ๋ ๊ฒ์ ๋ ์ฌ๋ฆฌ๋ฉด ์ฝ์ต๋๋ค. |
๋ณด์กฐ ์ธ๋ฑ์ค (secondary index) |
์ผ๋ฐ ์ฑ
์ ์ฐพ์๋ณด๊ธฐ์ ๊ฐ์ด ๋ณ๋์ ๊ณต๊ฐ์ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ฉ๋๋ค. create index์ ๊ฐ์ด index๋ฅผ ์์ฑํ๊ธฐ๋ฅผ ํ๊ฑฐ๋ ๊ณ ์ ํค(unique key)๋ก ์ง์ ํ๋ฉด ๋ณด์กฐ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ฉ๋๋ค. |
Index ์ฅ์
์ธ๋ฑ์ค์ ์ต๋ ์ฅ์ ์ ๊ฒ์ ์๋ ํฅ์ (SELECT~WHERE~) ์ ๋๋ค.
ํ ์ด๋ธ์ ๋ง๋ค๊ณ ์์ ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ฉด ํ ์ด๋ธ์ record๋ ๋ด๋ถ์ ์ผ๋ก ์์๊ฐ ์์ด ๋ค์ฃฝ๋ฐ์ฃฝ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด WHERE์ ์ ํตํด ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ค์ ์ฐพ์๋ผ ๋์๋ record์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ค ์ฝ์ด์ ๊ฒ์ ์กฐ๊ฑด๊ณผ ๋ง๋์ง ๋น๊ตํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ Full Table Scan์ด๋ผ๊ณ ํฉ๋๋ค.
๋ฐ๋ฉด์ index๋ฅผ ์์ฑํ๋ฉด index์๋ ๋ฐ์ดํฐ๋ค์ด ์ ๋ ฌ๋์ด ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์กฐ๊ฑด์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ค์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ผ ์ ์์ต๋๋ค. ์ด๊ฒ์ด Index๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ์ ๋๋ค.
๋ฐ์ดํฐ ๊ฒ์ ์๋ ํฅ์
๊ฐ์ฅ ์ค์ํ ์ฅ์ ์ค ํ๋๋ ๊ฒ์ ์๋์ ํฅ์์ ๋๋ค.
์ธ๋ฑ์ค๋ ํน์ ์ด(์นผ๋ผ)์ ๋ํ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ๊ณตํ๋ฏ๋ก ๊ฒ์ ์ฐ์ฐ์ด ๋น ๋ฅด๊ฒ ์ํ๋ฉ๋๋ค.
ํนํ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ํ ์ด๋ธ์ ์ค์บํ์ง ์๊ณ ๋ ์ํ๋ ๋ฐ์ดํฐ์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค.
๋ฒ์ ๊ฒ์ ์ฑ๋ฅ ํฅ์
์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ ์ธ๋ฑ์ค๋ ๋ฒ์ ๊ฒ์(ํน์ ๊ฐ ์ฌ์ด์ ๋ฒ์์์ ๋ฐ์ดํฐ ๊ฒ์)์ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
์ด๋ BETWEEN, >, <์ ๊ฐ์ ์ฐ์ฐ์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
์ ๋ํฌํ ๊ฐ ๊ด๋ฆฌ
์ ๋ํฌํ ์ ์ฝ ์กฐ๊ฑด์ ๊ฐ๋ ์ธ๋ฑ์ค๋ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ์ง ์์ต๋๋ค.
์ด๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ณ ์ค์๋ก ์ค๋ณต ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋๋ฐ ๋์์ ์ค๋๋ค.
์ ๋ ฌ๋ ๊ฒฐ๊ณผ ๋ฐํ
๋ช๋ช ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ๋ ์ํ๋ก ์ ์ฅํ๋ฏ๋ก, ORDER BY์ ๊ฐ์ ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์๊ตฌํ๋ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์ต์ ํ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ตํฐ๋ง์ด์ ๋ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ์ฟผ๋ฆฌ ์คํ ๊ณํ์ ์ต์ ํํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์กฐ์ธ ์ฑ๋ฅ ํฅ์
์กฐ์ธ ์ฐ์ฐ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์กฐ์ธ ์กฐ๊ฑด์ ๊ฒ์ ์๋๊ฐ ํฅ์๋์ด ์ ์ฒด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ ์ผ๋ฐ์ ์ธ ํฅ์
์ธ๋ฑ์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์ฟผ๋ฆฌ์ ์๋ต์๊ฐ์ด ๋จ์ถ๋๊ณ , ์์คํ ์์์ด ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๊ธฐ ์์ ์ ๋ํ ์ต์ ํ
์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ธฐ ์์ ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ ์ธ๋ฑ์ค์ ์ ํ ๋ฐ ์ค์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
ํ ์ด๋ธ ํ๋ณ์ฑ ๊ฐํ
์ธ๋ฑ์ค ํน์ ์ด์ ๋ํ ๋น ๋ฅธ ๊ฒ์์ ์ ๊ณตํ๋ฏ๋ก, ํ ์ด๋ธ์ ํ๋ณ์ฑ(๋ถ๋ฅ ๋๋ ๊ตฌ๋ถ๋ ฅ)์ ๊ฐํํฉ๋๋ค.
Index ๋จ์
์ธ๋ฑ์ค๋ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฑ ๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๋จ์ ๋ค์ ๊ณ ๋ คํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค๋ฅผ ์ ์คํ๊ฒ ์ค๊ณํ๊ณ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
์ธ๋ฑ์ค์ ์ฌ์ฉ์ ํน์ ํ ์ํฉ๊ณผ ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์กฐ์ ๋์ด์ผ ํ๋ฉฐ, ํ์ํ์ง ์์ ์ธ๋ฑ์ค๋ ์ญ์ ํ์ฌ ์์์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
์ฐ๊ธฐ ์ฑ๋ฅ ์ ํ
์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ํ ์ด๋ธ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์์ , ์ญ์ ํ ๋ ์ธ๋ฑ์ค๋ ํจ๊ป ์ ๋ฐ์ดํธ ๋์ด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ฐ๊ธฐ ์์ (INSERT, UPDATE, DELETE)์ ๋ํ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์ ์ฅ ๊ณต๊ฐ ๋ถ๋ด
์ธ๋ฑ์ค๋ ์ ์ฅ ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค.
๋์ฉ๋์ ํ ์ด๋ธ์ด๋ ์ฌ๋ฌ ๊ฐ์ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ๋์คํฌ ๊ณต๊ฐ์ ์๋น๊ฐ ๋์ด๋ ์ ์์ต๋๋ค.
์ด๋ ํนํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด ๋ ๋น ๋ฅธ ๊ฒ์์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ์ ๋ถ๋ด์ด ๋ ์ ์์ต๋๋ค.
์ธ๋ฑ์ค ์ ์ง ๋น์ฉ
์ธ๋ฑ์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋ฐ์ดํฐ ์ฝ์ , ์์ , ์ญ์ ์์ ์ถ๊ฐ์ ์ธ ์์ ์ด ํ์ํ๋ฉฐ, ์ด๋ก ์ธํด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ์์ฃผ ์ผ์ด๋๋ ๊ฒฝ์ฐ์ ๋ ๋ถ๊ฐ๋ ์ ์์ต๋๋ค.
๋ค์์ฑ ์๋ ์ฟผ๋ฆฌ์ ๋ํ ์ต์ ํ ์ด๋ ค์
๋ชจ๋ ์ฟผ๋ฆฌ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ ํ์ค์ ์ผ๋ก ์ด๋ ต์ต๋๋ค.
์ด๋ค ์ฟผ๋ฆฌ์๋ ์ธ๋ฑ์ค๊ฐ ๋์์ด ๋์ง ์์ ์ ์๊ณ , ๋ค๋ฅธ ์ฟผ๋ฆฌ์์๋ ํจ๊ณผ์ ์ผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ค์ํ ์ฟผ๋ฆฌ ํจํด์ ๋ํ ์ต์ ํ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
์์ฃผ ์ฌ์ฉ๋์ง ์๋ ์ธ๋ฑ์ค์ ๋ญ๋น
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ฃผ ์ฌ์ฉ๋์ง ์๋ ์ธ๋ฑ์ค๋ ์์์ ๋ญ๋นํ ์ ์์ต๋๋ค.
ํนํ ๋ณ๊ฒฝ์ด ์์ฃผ ์ผ์ด๋๋ ํ ์ด๋ธ์๋ ์ค์ ๋ก ์ฌ์ฉ๋์ง ์๋ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ณตํฉ ์ธ๋ฑ์ค์ ์ฃผ์์ฌํญ
๋ณตํฉ ์ธ๋ฑ์ค๋ ์ฌ๋ฌ ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง๋ฉฐ, ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๋๋ ์์์ ์ผ์นํด์ผ ์ต์ ์ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
์๋ชป๋ ์์๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ฉด ์ฑ๋ฅ ํฅ์์ด ๊ธฐ๋ํ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ์ ์์ต๋๋ค.
์ ๋ฐ์ดํธ๋ ํต๊ณ ์ ์ง ์ด๋ ค์
์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ธ๋ฑ์ค์ ํต๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ ์คํ ๊ณํ์ ์๋ฆฝํฉ๋๋ค.
ํต๊ณ๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์ผ๋ฉด ์ต์ ์ ์คํ ๊ณํ์ ์๋ฆฝํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
SELECT์ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ ๋ฐฉ๋ฒ
SELECT query์ ์ฑ๋ฅ์ ๋์ด๋ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ค์ ํ๋๋ Index๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
index๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด SELECT WHERE์ ์ฒ๋ผ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ table์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ณผ ํ์ ์์ด index์์ ๋น ๋ฅด๊ฒ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ฒ ๋ฉ๋๋ค.
Index์ ๋ด๋ถ๋์ ์๋ฆฌ
index๋ ๋๋ถ๋ถ B+ Tree ์๋ฃ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ด, WHERE ์กฐ๊ฑด๊ณผ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅ ์์น๋ฅผ ํจ์ฌ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
Index๋ฅผ ๋ง์ด ์์ฑํ๋ฉด ์๋๋ ์ด์
index๋ฅผ ์์ฑํ๋ฉด ์กฐ๊ฑด ๊ฒ์ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ถ๊ฐ ์ ์ฅ๊ณต๊ฐ์ด ํ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์์ /์ญ์ ๋ฅผ ํ ๋๋ง๋ค ๊ด๋ จ index๋ฅผ ๋ชจ๋ ์์ ํด์ค์ผ ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก ์์๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ถ๊ฐ ์ ์ฅ๊ณต๊ฐ๊ณผ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ์ ์์๋๋ ์ถ๊ฐ ์๊ฐ ๋ฑ์ ๋ณตํฉ์ ์ผ๋ก ๊ณ ๋ คํ์ฌ ์กฐ๊ฑด ๊ฒ์์ ์ฑ๋ฅํฅ์์ด ๋ ํฐ ์ด๋์ด ๋๋ค๊ณ ํ๋จ๋๋ column์๋ง index๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Index๋ก ์ฌ์ฉํ๊ธฐ ์ข์ column
index๋ where ์ ์์ ์์ฃผ ์กฐํ๋๊ณ , ์์ ๋น๋๊ฐ ๋ฎ์ผ๋ฉฐ, ์นด๋๋๋ฆฌํฐ๋ ๋๊ณ , ์ ํ๋๊ฐ ๋ฎ์ column์ ์ ํํด์ ์ค์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
๊ธฐ์ค | ์ ํฉ์ฑ |
์นด๋๋๋ฆฌํฐ(Cardinality) | ๋์์๋ก ์ ํฉ (๋ฐ์ดํฐ ์ค๋ณต์ด ์ ์์๋ก ์ ํฉ) |
์ ํ๋(Selectivity) | ๋ฎ์์๋ก ์ ํฉ |
์กฐํ ํ์ฉ๋ | ๋์์๋ก ์ ํฉ (where ์ ์์ ๋ง์ด ์ฌ์ฉ๋๋ฉด ์ ํฉ) |
์์ ๋น๋ | ๋ฎ์์๋ก ์ ํฉ |
Index ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- SELECT WHERE์ ์ ์์ฃผ ์ฌ์ฉ๋๋ Column์ ๋ํด index๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ฐ์ดํฐ ์์ ๋น๋๊ฐ ๋ฎ์์๋ก ์ ํฉํฉ๋๋ค. insert / update / delete ์์ ์, ๋ฐ์ดํฐ์ ๋ณํ๊ฐ ์๊ธฐ๊ธฐ ๋๋ฌธ์ index์์๋ ๋งค๋ฒ ์ ๋ ฌ์ ๋ค์ ํด์ผํฉ๋๋ค. ์ด์ ๋ฐ๋ฅธ ๋ถํ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์์ ๋น๋๊ฐ ๋ฎ์ column์ index๋ก ์ค์ ํ๋ฉด ์ข์ต๋๋ค.
- ๋ฐ์ดํฐ์ ์ค๋ณต์ด ๋์ column์ index ํจ๊ณผ๊ฐ ๋ณ๋ก ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฑ๋ณ์ ์ข ๋ฅ๊ฐ 2 ๊ฐ์ง ๋ฐ์ ์์ผ๋ฏ๋ก index๋ฅผ ์์ฑํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฆ, ์ ํ๋๊ฐ ๋ฎ์ ๋ ์ ๋ฆฌํฉ๋๋ค.(๋ณดํต 5~10% ์ด๋ด)
- ๋ฐ์ดํฐ์ ์์ด ๋ง์์๋ก index๋ก ์ธํ ์ฑ๋ฅํฅ์์ด ๋ ํฝ๋๋ค. ๋ฐ์ดํฐ ์์ด ์ ๋ค๋ฉด index์ ํํ๋ณด๋จ ์ํด๊ฐ ๋ ํด ์ ์์ต๋๋ค.
- Join ์กฐ๊ฑด์ผ๋ก ์์ฃผ ์ฌ์ฉ๋๋ column์ ๊ฒฝ์ฐ
- ํ table์ index๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ๋ฐ์ดํฐ ์์ ์ ์์๋๋ ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด์ง ์ ์์ต๋๋ค. (table๋น 4~5๊ฐ ์ ๋ ๊ถ์ฅ)
์ฐธ๊ณ