B-Tree Index
B-Tree ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ, Binary์ B๊ฐ ์๋๋ผ Balanced์ B
๊ตฌ์กฐ ๋ฐ ํน์ฑ
์ต์์์ ํ๋์ ๋ฃจํธ ๋ ธ๋๊ฐ ์กด์ฌํ๊ณ , ๊ทธ ํ์์ ์์ ๋ ธ๋๊ฐ ๋ถ์ด ์๋ ํํ๋ก ์๋์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋๋ค.
Root Node: ์ต์์ ๋ ธ๋
Branch Node: ์ค๊ฐ์ ์๋ ๋ ธ๋
Leaf Node: ๊ฐ์ฅ ํ์์ ์๋ ๋ ธ๋
InnoDB์ ๋ฆฌํ ๋
ธ๋
InnoDB์์๋ ๋ฆฌํ ๋ ธ๋์์ PK ๊ฐ์ ๊ฐ์ง๊ณ ์์ด ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.(MyISAM์ ๋ฆฌํ ๋ ธ๋์ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์)
๋ณด์กฐ ์ธ๋ฑ์ค์์ ์กฐ๊ฑด์ ๋ง๋ ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์ PK ์กฐํ
PK๋ฅผ ํตํด ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ๋ค์ ๊ฒ์ํด ์ต์ข ๋ฐ์ดํฐ ๋ ์ฝ๋ ์กฐํ

๊ฒฐ๊ตญ ์์ ๊ฐ์ด ์ฌ๋ฌ ๋์ค๋ฅผ ๊ฑฐ์ณ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ์, ๋ฐ๋ก ๋ฐ์ดํฐ ๋ ์ฝ๋๋ฅผ ์ฐพ์ ๋ ๋ณด๋ค ์ฝ 4-5๋ฐฐ ์ ๋ ๋ ๋ง์ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
๋ ์ฝ๋ ์ถ๊ฐ/์ญ์ /๋ณ๊ฒฝ/๊ฒ์ ๊ณผ์
์ธ๋ฑ์ค๊ฐ ์ ์ฉ๋ ํ ์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค ํค ์ถ๊ฐ๋ ์ญ์ ์์ ์ด ๋ฐ์ํ๋๋ฐ, ๊ฐ ์์ ์ ์๋์ ๊ฐ์ด ์ฒ๋ฆฌ๋๋ค.
์ธ๋ฑ์ค ํค ์ถ๊ฐ
B-Tree์ ์ ์ฅ๋ ๋ ์ ์ฅ๋ ํค ๊ฐ์ ์ด์ฉํด ์ ์ ํ ์์น๋ฅผ ํ์ ํ ๋ฆฌํ ๋ ธ๋์ ์ ์ฅ
๋ง์ฝ ์ ์ฅํ ์์น์ ๋ฆฌํ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ์๋ค๋ฉด ๋ฆฌํ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํ๊ณ ์๋ก์ด ๋ฆฌํ ๋ ธ๋๋ฅผ ์์ฑ
์ด ๋ ์์ ๋ธ๋์น ๋ ธ๋๊น์ง ์ฒ๋ฆฌ ๋ฒ์๊ฐ ๋์ด์ ธ ๋ง์ ๋น์ฉ์ด ๋ฐ์
์ด ๋ ๋ฐ์ํ๋ ๋น์ฉ์ ๋๋ถ๋ถ์ด ๋ฉ๋ชจ๋ฆฌ์ CPU์์ ๋ฐ์ํ๋ ๊ฒ์ด ์๋, ๋์คํฌ๋ก๋ถํฐ ์ฝ๊ณ /์ฐ๊ธฐ ์์ ์ ๋ง์ ๋น์ฉ(์๊ฐ)์ด ๋ฐ์
InnoDB์ ๊ฒฝ์ฐ ์ธ๋ฑ์ค ํค ์ถ๊ฐ ์์ ์ ์ง์ฐ์์ผ ๋์ค์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๋ ์กด์ฌ(=์ฒด์ธ์ง ๋ฒํผ)
Primary Key, Unique Index ๊ฒฝ์ฐ ์ค๋ณต์ฒดํฌ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ง์ฐ์ํฌ ์ ์์
์ธ๋ฑ์ค ํค ์ญ์
ํด๋น ํค ๊ฐ์ด ์ ์ฅ๋ B-Tree ๋ฆฌํ ๋ ธ๋๋ฅผ ์ฐพ์ ์ญ์ ๋งํฌ๋ง ํ๋ฉด ์์ ์๋ฃ
์ญ์ ๋งํน๋ ์ธ๋ฑ์ค ํค ๊ณต๊ฐ์ ๋ฐฉ์นํ๊ฑฐ๋ ์ฌํ์ฉ ๊ฐ๋ฅ
์ญ์ ๋ํ ๋์คํฌ ์ฐ๊ธฐ๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ๋์คํฌ I/O ๋น์ฉ ๋ฐ์
์ถ๊ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ญ์ ์์ ๋ ์ง์ฐ์ํฌ ์ ์์
์ธ๋ฑ์ค ํค ๋ณ๊ฒฝ
B-Tree์ ํค ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ๋ฆฌํ ๋ ธ๋ ์์น์ ๋ณ๊ฒฝ ํ์ํ๊ธฐ ๋๋ฌธ์, ์ด ๋ ํค ๊ฐ์ ์ญ์ ํ ํ ์๋ก์ด ํค ๊ฐ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ
์์ ์ญ์ ๋ฐ ์ถ๊ฐ ๊ณผ์ ์ด ์ ์ฐจ์ ์ผ๋ก ์งํ(๋ง์ฐฌ๊ฐ์ง๋ก ์ง์ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
์ธ๋ฑ์ค ํค ๊ฒ์
์์ ๋น์ฉ๋ค์ ๊ฐ์ํ๊ณ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ค ํ๋(๋น ๋ฅธ ํ์)
๋ฃจํธ ๋ ธ๋๋ก๋ถํฐ ์์ํด ๋ธ๋์น ๋ ธ๋๋ฅผ ๊ฑฐ์ณ ์ต์ข ๋ฆฌํ ๋ ธ๋๊น์ง ์ด๋ํ๋ฉด์ ํ์(=ํธ๋ฆฌ ํ์)
SELECT(์กฐํ)์์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ด ์๋ UPDATE/DELETE์์๋ ์กฐํ ํ ๋ณ๊ฒฝ/์ญ์ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋จ
ํ์ด์ง(Page)
ํ์ด์ง๋ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ๋ณธ ๋จ์๋ก, ๋์คํฌ์ ๋ชจ๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ต์ ์์ ๋จ์๊ฐ ๋๋ค.
InnoDB ์คํ ๋ฆฌ์ง ์์ง์ ๋ฒํผ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ๋งํ๋ ๊ธฐ๋ณธ ๋จ์
ํ๋์ ๋ ์ฝ๋๋ฅผ ์ฝ๋๋ผ๋ ๊ฒฐ๊ตญ์ ํ๋์ ํ์ด์ง ๋จ์๋ก ์กฐํ ํ์
๋๋ฌธ์ ํ๋์ ํ์ด์ง์ ๋ง์ ๋ ์ฝ๋๊ฐ ์ ์ฅ๋์ด ์์์๋ก ๋์คํฌ I/O๊ฐ ๋ฐ์ํ๋ ํ์๊ฐ ์ค์ด๋ค๊ฒ ๋๊ณ , ์ฑ๋ฅ ํฅ์์ ๋์์ด ๋๋ค.
์ธ๋ฑ์ค ์ฌ์ฉ์ ์ํฅ์ ๋ฏธ์น๋ ์์
์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ปฌ๋ผ์ ํฌ๊ธฐ / ๋ ์ฝ๋ ๊ฑด์ / ์ ๋ํฌ ์ธ๋ฑ์ค ํค ๊ฐ์ ๊ฐ์ ๋ฑ์ ๋ฐ๋ผ ๋ณ๊ฒฝ/์กฐํ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์๋ค.
1. ์ธ๋ฑ์ค ํค ๊ฐ์ ํฌ๊ธฐ
์ธ๋ฑ์ค๋ ํ์ด์ง ๋จ์๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์, B-Tree์ ๊ฐ ๋ ธ๋์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๊ฐ์๋ ์ธ๋ฑ์ค ํค ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
์ธ๋ฑ์ค ํ์ด์ง ํฌ๊ธฐ: 16KB
์ธ๋ฑ์ค ํค: 16 Byte
์์๋ ธ๋ ์ฃผ์: 12 Byte
ํ๋์ ์ธ๋ฑ์ค ํ์ด์ง์ ์ ์ฅํ ์ ์๋ ์ต๋ ํค ๊ฐ์ ๊ฐ์: 16 * 1024 / (16 + 12) = 585
์ธ๋ฑ์ค์ ํค๊ฐ ์ปค์ง๊ฒ ๋๋ฉด, ๊ทธ๋งํผ ํ๋์ ์ธ๋ฑ์ค ํ์ด์ง์ ์ ์ฅํ ์ ์๋ ํค ๊ฐ์ ๊ฐ์๊ฐ ์ค์ด๋ค๊ฒ ๋๋ฉด์, ๋์คํฌ I/O ํ์๊ฐ ์ฆ๊ฐํ๊ณ ๊ทธ๋งํผ ์ฑ๋ฅ์ด ์ ํ๋๋ค.
2. B-Tree ๊น์ด
B-Tree ์ธ๋ฑ์ค์ ๊น์ด๋ ์ฑ๋ฅ์ด ์ค์ํ ์์ ์ค ํ๋์ง๋ง, ์ง์ ์ ์ดํ ์ ์๋ ์์๊ฐ ์๋๋ฉฐ, ์ธ๋ฑ์ค ํค ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค.
์ธ๋ฑ์ค ํค ๊ฐ์ ํ๊ท ํฌ๊ธฐ๊ฐ ๋์ด๋๋ฉด ํ๋์ ํ์ด์ง์ ์ ์ฅํ ์ ์๋ ํค ๊ฐ์ ๊ฐ์ ๊ฐ์
ํ๋์ ํ์ด์ง์ ์ ์ฅํ ์ ์๋ ํค ๊ฐ์ ๊ฐ์๊ฐ ์ค์ด๋ค์ด, ํ๋์ ๋ ธ๋์ ์ ์ฅํ ์ ์๋ ์์ ๋ ธ๋์ ๊ฐ์๋ ๊ฐ์
๊ฒฐ๊ตญ B-Tree์ ๊น์ด ์ฆ๊ฐ
๊น์ด๊ฐ ๊น์ด์ง ์๋ก ๋์คํฌ I/O ํ์๊ฐ ์ฆ๊ฐ -> ์ฑ๋ฅ ์ ํ
๋๋ฌธ์ ์ธ๋ฑ์ค ํค ๊ฐ์ ํ๊ท ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ ๊น์ด๋ฅผ ์ค์ด๋ ๊ฒ๊ณผ ์ง๊ฒฐ๋๊ณ , ์ด๋ ๋์คํฌ I/O ํ์๋ฅผ ์ค์ด๊ฒ ๋๋ฉด์, ๊ทธ๋งํผ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
3. ์ฝ์ด์ผ ํ๋ ๋ ์ฝ๋์ ๊ฑด์
์ธ๋ฑ์ค๋ฅผ ํตํ ์ฝ๊ธฐ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ๋ค๋ฉด ์คํ๋ ค ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
์ง์ ๋ ์ฝ๋๋ฅผ ์ฝ๋ ๊ฒ๋ณด๋ค ๋์ ๋น์ฉ(4-5๋ฐฐ)์ด ๋ฐ์
์ ์ฒด ๋ ์ฝ๋์ 20-25%๋ฅผ ๋์ด๊ฐ๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ๋ ํจ์จ์
4. ์ ํ๋(๊ธฐ์์ฑ)
์ ํ๋(Selectivity) / ๊ธฐ์์ฑ(Cardinality)๋ ๊ฑฐ์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋ ์ธ๋ฑ์ค ํค ๊ฐ ๊ฐ์ด๋ฐ ์ ๋ํฌํ ๊ฐ์ ์๋ฅผ ์๋ฏธํ๋ค.
์ ์ฒด ์ธ๋ฑ์ค ํค ๊ฐ: 100๊ฐ
์ ๋ํฌํ ๊ฐ: 10๊ฐ
๊ธฐ์์ฑ: 10
์ค๋ณต๋ ๊ฐ์ด ๋ง์์ง๋ฉด ๊ธฐ์์ฑ์ด ๋ฎ์์ง๊ฒ ๋๊ณ , ๊ธฐ์์ฑ์ด ๋ฎ์์ง๋ฉด ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ ๋ ์ฝ๋์ ๊ฑด์๊ฐ ๋์ด๋๊ฒ ๋๋ค.
์์
์ธ๋ฑ์ค๋ ์ปฌ๋ผ(country)์ ๋ํด์๋ ์ ์ฒด ๋ ์ฝ๋์ ๊ฑด์๋ ์ ๋ํฌํ ๊ฐ์ ๊ฐ์ ๋ฑ์ ๋ํ ํต๊ณ ์ ๋ณด๋ฅผ ๊ฐ์ง
์ ์ฒด ๋ ์ฝ๋ ๊ฑด์๋ฅผ ์ ๋ํฌ ๊ฐ ๊ฐ์๋ก ๋๋๊ฒ๋๋ฉด ํ๋์ ํค ๊ฐ์ผ๋ก ๊ฒ์ํ์ ๋ ํ๊ท ์ ์ผ๋ก ์ฝ์ด์ผ ํ๋ ๋ ์ฝ๋ ๊ฑด์๋ฅผ ์ ์ ์์
๊ธฐ์์ฑ์ด ๋ฎ์์ง๋ฉด ์ธ๋ฑ์ค๋ฅผ ํตํด ์ฝ์ด์ผ ํ ๋ ์ฝ๋์ ๊ฑด์๊ฐ ๋์ด๋๊ฒ ๋๋ฉด์, ๊ทธ๋งํผ ํ์ด์ง๋ฅผ ์ฝ์ด์ผ ํ๋ ํ์๊ฐ ๋์ด๋๊ฒ ๋๊ณ , ๊ทธ๋งํผ ์ฑ๋ฅ์ด ์ ํ๋๋ค.
B-Tree ์ธ๋ฑ์ค๋ฅผ ํตํ ๋ฐ์ดํฐ ์ฝ๊ธฐ
1. ์ธ๋ฑ์ค ๋ ์ธ์ง ์ค์บ
์ธ๋ฑ์ค ์ ๊ทผ ๋ฐฉ๋ฒ ๊ฐ์ด๋ฐ ๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก, ์์ํด์ผ ํ ์์น๋ฅผ ์ฐพ๊ณ ๊ทธ ์์น๋ถํฐ ๋๊น์ง ์์ฐจ์ ์ผ๋ก ์ฝ์ด์ ๊ฒ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ ์ฝ๋๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ธ๋ฑ์ค ํ์: ๋ฆฌํ ๋ ธ๋๊น์ง ๋ค์ด๊ฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ธ ์ค์บ ์์ ์ง์ ํ์
์ธ๋ฑ์ค ์ค์บ: ์์์ ํ์๋ ์์น๋ถํฐ ํ์ํ ๋งํผ ์ธ๋ฑ์ค๋ฅผ ์ฐจ๋ก๋๋ก ์ค์บ
ํ ์ด๋ธ ๋ฐ์ดํฐ ์ ๊ทผ: ์ฝ์ด๋ค์ธ ์ธ๋ฑ์ค ํค์ PK๋ฅผ ์ด์ฉํด ์ผ์นํ ์ค์ ๋ฐ์ดํฐ ๋ ์ฝ๋ ์กฐํ(๋๋ค I/O ๋ฐ์)
์ปค๋ฒ๋ง ์ธ๋ฑ์ค
์ฟผ๋ฆฌ๋ฅผ ์ถฉ์กฑ์ํค๋๋ฐ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค์์๋ง ์ฝ์ด์ฌ ์ ์๋ ์ธ๋ฑ์ค๋ฅผ ์ปค๋ฒ๋ง ์ธ๋ฑ์ค๋ผ๊ณ ํ๋ค.
์ธ๋ฑ์ค ์ค์บ๋ง์ผ๋ก ์ํ๋ ๋ฐ์ดํฐ ์กฐํ ๊ฐ๋ฅ
3๋ฒ์ ํด๋นํ๋ ๋ ์ฝ๋๋ฅผ ์ฝ์ด์ค๋ ์์ ์ ์๋ตํ์ฌ ๋๋ค I/O๊ฐ ๋ฐ์ํ์ง ์์
2. ์ธ๋ฑ์ค ํ ์ค์บ
์ธ๋ฑ์ค์ ์ฒ์๋ถํฐ ๋๊น์ง ๋ชจ๋ ์ฝ๋ ๋ฐฉ์์ผ๋ก, ๋ณดํต ์กฐ๊ฑด์ ์ ์ฌ์ฉ๋ ์ปฌ๋ผ์ด ์ธ๋ฑ์ค์ ์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ด ์๋ ๋ ๋ฒ์งธ ์ดํ์ ์ปฌ๋ผ์ธ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
์ธ๋ฑ์ค์ ๋ช ์๋ ์ปฌ๋ผ๋ง์ผ๋ก ์กฐ๊ฑด์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ(์ปค๋ฒ๋ง ์ธ๋ฑ์ค ์กฐ๊ฑด) ์ฌ์ฉ
๋ณดํต ์ธ๋ฑ์ค์ ํฌ๊ธฐ๋ ์ค์ ๋ ์ฝ๋๊ฐ ๋ด๊ธด ํ ์ด๋ธ์ ํฌ๊ธฐ๋ณด๋ค ์์ผ๋ฏ๋ก ์ง์ ํ ์ด๋ธ์ ์ฒ์๋ถํฐ ๋๊น์ง ์ฝ๋ ํ ์ด๋ธ ํ ์ค์บ๋ณด๋ค ํจ์จ์
3. ๋ฃจ์ค ์ธ๋ฑ์ค ์ค์บ
์ค๊ฐ์ ํ์์น ์๋ ์ธ๋ฑ์ค ํค ๊ฐ์ ๋ฌด์(SKIP)ํ๊ณ ์ฝ๋ ๋ฐฉ์์ผ๋ก, ์ผ๋ฐ์ ์ผ๋ก GROUP BY ๋๋ MAX(), MIN() ๊ฐ์ ์งํฉ ํจ์์ ๋ํด ์ต์ ํ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
์ธ๋ฑ์ค๊ฐ (dept_no, emp_no) ์กฐํฉ์ผ๋ก ์ด๋ฏธ ์ ๋ ฌ๋์ด์๊ธฐ ๋๋ฌธ์ depth_no ๊ทธ๋ฃน ๋ณ๋ก ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋(๊ฐ์ฅ ์์ emp_no)๋ง ์ฝ์ด์ค๋ฉด ๋๋ค.
5
d002
10042
Finance
Magy
O
5
d002
10043
Finance
Yinghua
X
5
d002
10044
Finance
Eber
X
...
...
...
...
...
X
...
...
...
...
...
X
6
d003
10045
Human
Kyoichi
O
6
d003
10046
Human
Eberhardt
X
6
d003
10047
Human
Admanatios
X
...
...
...
...
...
X
...
...
...
...
...
X
7
d004
10048
Legal
Seong
O
7
d004
10049
Legal
Ziya
X
7
d004
10050
Legal
Eber
X
...
...
...
...
...
...
์ฆ ์ธ๋ฑ์ค์์ WHERE ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฒ์ ์ ์ฒด๋ฅผ ์ค์บํ ํ์๊ฐ ์๋ ๊ฒ์ ์ตํฐ๋ง์ด์ ๊ฐ ํ๋จํ๊ณ ์ค๊ฐ์ ๋ ์ฝ๋๋ ๋ฌด์ํ๊ณ ํ์ํ ๋ ์ฝ๋๋ง ์ฝ์ด์ค๋ ๋ฐฉ์์ด๋ค.
์ธ๋ฑ์ค ์คํต ์ค์บ
๋ค์ค ์ปฌ๋ผ ์ธ๋ฑ์ค (col_a, col_b)์์ col_a ์กฐ๊ฑด ์์ด col_b๋ง์ผ๋ก๋ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
5
M
1965-03-09
X
5
M
1965-05-09
O
5
M
1965-06-09
O
...
...
...
O
6
M
1965-12-09
O
6
F
1965-01-09
X
6
F
1965-02-09
X
...
...
...
X
7
F
1965-04-09
X
7
F
1965-05-09
O
7
F
1965-06-09
O
...
...
...
O
gender ์ปฌ๋ผ์ด ๊ฐ์ง ์ ๋ํฌ ๊ฐ์ ๊ตฌํจ(์ปฌ๋ผ์ ํ์ ์ ์๊ด ์์)
๊ฐ ์ ๋ํฌ ๊ฐ์ ๋ํด ์กฐ๊ฑด์ ์ถ๊ฐํ ์ฟผ๋ฆฌ๋ฅผ ์คํ
๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ ์ธ์ง ์ค์บ์ผ๋ก ์ฒ๋ฆฌ
๊ฐ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ํฉ์ณ์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
๊ฒฐ๊ตญ gender ์ปฌ๋ผ์์ ์ ๋ํฌํ ๊ฐ์ ๋ชจ๋ ์กฐํํ์ฌ ์ฃผ์ด์ง ์ฟผ๋ฆฌ์ gender ์ปฌ๋ผ์ ์กฐ๊ฑด์ ์ถ๊ฐํด์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๊ฒ๊ณผ ๊ฐ์ ํํ์ ์ต์ ํ๋ฅผ ์คํํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์๋ ๋ ๊ฐ์ง ๋จ์ ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ํญ์ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๋ค.
WHERE ์กฐ๊ฑด์ ์ ์กฐ๊ฑด์ด ์๋ ์ธ๋ฑ์ค์ ์ ํ ์ปฌ๋ผ์ ์ ๋ํฌํ ๊ฐ์ ๊ฐ์๊ฐ ๋ง์์๋ก ์ฑ๋ฅ์ด ์ ํ
์ฟผ๋ฆฌ๊ฐ ์ธ๋ฑ์ค์ ์กด์ฌํ๋ ์ปฌ๋ผ๋ง ์กด์ฌ(= ์ปค๋ฒ๋ง ์ธ๋ฑ์ค)
์ธ๋ฑ์ค ์ธ์ ์ปฌ๋ผ์ ํ์๋ก ํ๋ ๊ฒฝ์ฐ ํ ํ ์ด๋ธ ์ค์บ์ผ๋ก ์ฒ๋ฆฌ
๋ค์ค ์ปฌ๋ผ(Multi-column) ์ธ๋ฑ์ค
์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ํ, ๊ทธ ์์์ ๋ ๋ฒ์งธ ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋๋ค.
์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ปฌ๋ผ์ ์์๊ฐ ์ค์
์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๋ํ ์กฐ๊ฑด์ด ์์ผ๋ฉด ์ธ๋ฑ์ค ์ฌ์ฉ ๋ถ๊ฐ๋ฅ(์ธ๋ฑ์ค ์คํต ์ค์บ ๊ธฐ๋ฅ ์ ์ธ)
์ฒซ ๋ฒ์งธ ์ปฌ๋ผ์ ๋ํ ์กฐ๊ฑด์ด ์์ผ๋ฉด ๊ทธ ๋ค์ ์ปฌ๋ผ์ ๋ํ ์กฐ๊ฑด์ด ์์ด๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
B-Tree ์ธ๋ฑ์ค์ ์ ๋ ฌ ๋ฐ ์ค์บ ๋ฐฉํฅ
์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ์ค์ ํ ์ ๋ ฌ ๊ท์น์ ๋ฐ๋ผ ํญ์ ์ค๋ฆ์ฐจ์/๋ด๋ฆผ์ฐจ์ ์ค ํ๋๋ก ์ ๋ ฌ๋์ด ์ ์ฅ๋๋ค.
์์ฑ๋ ์ธ๋ฑ์ค์๋ ๋ณ๊ฐ๋ก ์ค์บ ํ ๋๋ ์์ฑ๋ ์ธ๋ฑ์ค์ ์ ๋ ฌ ๊ท์น๊ณผ๋ ์๊ด์์ด ์ํ๋ ๋ฐฉํฅ์ผ๋ก ์ค์บ ๊ฐ๋ฅ(๋ฐฉํฅ์ ์ตํฐ๋ง์ด์ ๊ฐ ์ค์๊ฐ์ผ๋ก ๋ง๋ค์ด๋ธ ์คํ ๊ณํ์ ๋ฐ๋ผ ๊ฒฐ์ )
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ด์ง ์ ๊ธ์ด ์ธ๋ฑ์ค ์ ์ ์ค์บ(Forward index scan)์ ๋ ์ ํฉํ ๊ตฌ์กฐ๊ธฐ ๋๋ฌธ์ ์ ๋ฐฉํฅ ์ค์บ์ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ
B-Tree ์ธ๋ฑ์ค์ ๊ฐ์ฉ์ฑ๊ณผ ํจ์จ์ฑ
๋น๊ต ์กฐ๊ฑด ์ข
๋ฅ
๋ค์ค ์ปฌ๋ผ ์ธ๋ฑ์ค์์ ๊ฐ ์ปฌ๋ผ์ ์์์ ๋น๊ต ์กฐ๊ฑด์ ๋ฐ๋ผ ์ธ๋ฑ์ค์ ๊ฐ์ฉ์ฑ๊ณผ ํจ์จ์ฑ์ด ๋ฌ๋ผ์ง๋ค.
์ผ์ด์ค A: INDEX(dept_no, emp_no)
dept_no='d002' AND emp_no>=10114์ธ ๋ ์ฝ๋๋ฅผ ์ฐพ๊ณ dept_no๊ฐ 'd002'๊ฐ ์๋ ๋ ๊น์ง ์ค์บ
...
...
...
X
6
d002
10114
O
6
d002
10117
O
6
d002
10300
O
...
...
...
O
7
d002
10595
O
7
d003
10111
X
...
...
...
X
์ผ์ด์ค B: INDEX(emp_no, dept_no)
dept_no='d002' AND emp_no>=10114์ธ ๋ ์ฝ๋๋ฅผ ์ฐพ๊ณ ๊ทธ ํ ๋ชจ๋ ๋ ์ฝ๋์ ๋ํด dept_no๊ฐ 'd002'์ธ์ง ํ์ธ
...
...
...
...
6
10111
d003
X
6
10114
d002
O
6
10117
d002
O
6
10300
d002
O
...
...
...
O
7
10595
d002
O
...
...
d001
O
์ธ๋ฑ์ค ์ฌ์ฉ ๋ถ๊ฐ ์กฐ๊ฑด
B-Tree ์ธ๋ฑ์ค๋ ์๋์ ๊ฐ์ ๋น๊ต ์กฐ๊ฑด์ ๋ํด์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
NOT-EQUAL๋ก ๋น๊ต๋ ๊ฒฝ์ฐ
WHERE column <> 'N'WHERE column NOT IN ('N', 'M')WHERE column IS NOT NULL
LIKE '%??'(๋ท ๋ถ๋ถ ์ผ์น)๋ก ๋น๊ต๋ ๊ฒฝ์ฐ
WHERE column LIKE '%mer'WHERE column LIKE '_mer'WHERE column LIKE '%mer%'
์คํ ์ด๋ ํจ์๋ ๋ค๋ฅธ ์ฐ์ฐ์๋ก ์ธ๋ฑ์ค ์ปฌ๋ผ์ด ๋ณํ๋ ํ ๋น๊ต๋ ๊ฒฝ์ฐ
WHERE SUBSTRING(column, 1, 1) = 'X'WHERE DAYOFMONTH(column) = 1
NOT-DETERMINISTIC ์์ฑ์ ์คํ ์ด๋ ํจ์๊ฐ ๋น๊ต ์กฐ๊ฑด์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ
WHERE column = deterministic_function()
๋ฐ์ดํฐ ํ์ ์ด ์๋ก ๋ค๋ฅธ ๋น๊ต
WHERE char_column = 10
๋ฌธ์์ด ๋ฐ์ดํฐ ํ์ ์ ์ฝ๋ ์ด์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ
WHERE utf8_bin_char_column = euckr_bin_char_column
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?