[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์กฐ์ธ(Join)
์กฐ์ธ(Join)์ด๋ ํ๋์ ํ ์ด๋ธ์ด ์๋ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๋ฌถ์ด์ ํ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋๋ ๊ฒ์ ๋งํ๋ค. MySQL์์๋ JOIN์ด๋ผ๋ ์ฟผ๋ฆฌ๋ก, MongoDB์์๋ lookup์ด๋ผ๋ ์ฟผ๋ฆฌ๋ก ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. (
1eehyunji.tistory.com
์ ๊ฒ์๊ธ์์ ์ค๋ช ํ ์กฐ์ธ์ ์กฐ์ธ์ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ด ์ด๋ฃจ์ด์ง๋ค.
์กฐ์ธ์ ์๋ฆฌ์ธ ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ, ์ ๋ ฌ ๋ณํฉ ์กฐ์ธ, ํด์ ์กฐ์ธ์ ๋ํด ์์๋ณด์!
์ค์ฒฉ ๋ฃจํ ์กฐ์ธ(NLJ, Nested Loop Join)
์ค์ฒฉ ๋ฃจํ ์กฐ์ธ์ ์ค์ฒฉ for๋ฌธ๊ณผ ๊ฐ์ ์๋ฆฌ๋ก ์กฐ๊ฑด์ ๋ง๋ ์กฐ์ธ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ฉฐ, ๋๋ค ์ ๊ทผ์ ๋ํ ๋น์ฉ์ด ๋ง์ด ์ฆ๊ฐํ๋ฏ๋ก ๋์ฉ๋์ ํ ์ด๋ธ์์๋ ์ฌ์ฉํ์ง ์๋๋ค.
์๋ฅผ ๋ค์ด, "t1, t2 ํ ์ด๋ธ์ ์กฐ์ธํ๋ค."๋ผ๊ณ ํ์ ๋ ์ฒซ ๋ฒ์งธ ํ ์ด๋ธ์์ ํ์ ํ ๋ฒ์ ํ๋์ฉ ์ฝ๊ณ ๊ทธ ๋ค์ ํ ์ด๋ธ์์๋ ํ์ ํ๋์ฉ ์ฝ์ด ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๋ฅผ ์ฐพ์ ๊ฒฐ๊ด๊ฐ์ ๋ฐํํ๋ค.
for each row in t1 matching reference key {
for each row in t2 matching reference key {
if row satisfies join conditions, send to client
}
}
์ ๋ ฌ ๋ณํฉ ์กฐ์ธ(Sort Merge Join)
์ ๋ ฌ ๋ณํฉ ์กฐ์ธ์ด๋ ๊ฐ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ ํ๋ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ , ์ ๋ ฌ์ด ๋๋ ์ดํ์ ์กฐ์ธ ์์ ์ ์ํํ๋ ์กฐ์ธ์ด๋ค.
์กฐ์ธํ ๋ ์ธ ์ ์ ํ ์ธ๋ฑ์ค๊ฐ ์๊ณ , ๋์ฉ๋์ ํ ์ด๋ธ๋ค์ ์กฐ์ธํ๊ณ , ์กฐ์ธ ์กฐ๊ฑด์ <, > ๋ฑ ๋ฒ์ ๋น๊ต ์ฐ์ฐ์๊ฐ ์์ ๋ ์ด๋ค.
๋ง์ฝ ๋ ํ ์ด๋ธ์ ์ ๋ ฌ ์กฐ๊ฑด์ ๋ฐ์ดํฐ ์ฐจ์ด๊ฐ ์ปค์, ์ ๋ ฌ์ ์๊ฐ ์ฐจ์ด๊ฐ ์ปค์ง๋ ๊ฒฝ์ฐ ํ ํ ์ด๋ธ์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ ๋ ฌ์ด ๋๋ ๋๊น์ง ๋๊ธฐํด์ผ ํ๋ฏ๋ก, ๋นํจ์จ์ ์ผ ์ ์๋ค.
ํด์ ์กฐ์ธ(Hash Join)
ํด์ ์กฐ์ธ์ ํด์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์ธํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋, ๋๋ฑ(=) ์กฐ์ธ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
MySQL์ ํด์ ์กฐ์ธ ๋จ๊ณ๋ ๋น๋ ๋จ๊ณ์ ํ๋ก๋ธ ๋จ๊ณ๋ก ๋๋๋ค.
๋น๋ ๋จ๊ณ
๋น๋ ๋จ๊ณ๋ ์ ๋ ฅ ํ ์ด๋ธ ์ค ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ด์ ํด์ ํ ์ด๋ธ์ ๋น๋ํ๋ ๋จ๊ณ์ด๋ค.
์๋ฅผ ๋ค์ด, person๊ณผ country๋ผ๋ ํ ์ด๋ธ์ ์กฐ์ธํ๋ค๊ณ ํ์ ๋ ๋ ์ค ์ฉ๋์ด ๋ ์ ์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํด์ ํ ์ด๋ธ์ ๋น๋ํ๋ค.
๋, ์กฐ์ธ์ ์ฌ์ฉ๋๋ ํ๋๊ฐ ํด์ ํ ์ด๋ธ์ ํค๋ก ์ฌ์ฉ๋๋ค.
์๋ฅผ ๋ค์ด, person๊ณผ country ํ ์ด๋ธ ์ค country ํ ์ด๋ธ์ ์ฉ๋์ด ๋ ์ ๊ณ , ๋ ํ ์ด๋ธ์ ์กฐ์ธ์ ์ฌ์ฉ๋๋ ํ๋๊ฐ ID์ธ ๊ฒฝ์ฐ, ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด country.ID๊ฐ ํด์ ํ ์ด๋ธ์ ํค๋ก ์ฌ์ฉ๋๋ค.
ํ๋ก๋ธ ๋จ๊ณ
ํ๋ก๋ธ ๋จ๊ณ ๋์ ๋ ์ฝ๋ ์ฝ๊ธฐ๋ฅผ ์์ํ๋ฉฐ, ๊ฐ ๋ ์ฝ๋์์ person.ID์ ์ผ์นํ๋ ๋ ์ฝ๋๋ฅผ ์ฐพ์ ๊ฒฐ๊ด๊ฐ์ ๋ฐํํ๋ค.
์ฆ, ํด์ ์กฐ์ธ์ ํด์ ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ฉ๋์ด ๋ ์ ์ ์ชฝ์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํด์ํ ์ด๋ธ์ ๋ง๋ค๊ณ (๋น๋ ๋จ๊ณ), ์ฉ๋์ด ๋ ํฐ ์ชฝ์ ํ ์ด๋ธ์ ํ์ํ๋ฉด์ ์กฐ์ธ์ ์ํ(ํ๋ก๋ธ ๋จ๊ณ)ํ๋ค.
์ด๋ฅผ ํตํด ๊ฐ ํ ์ด๋ธ์ ํ ๋ฒ์ฉ๋ง ์ฝ๊ฒ ๋์ด ์ค์ฒฉํด์ ๋ ๊ฐ์ ํ ์ด๋ธ์ ์ฝ๋ ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ๋ณด๋ค ๋ณดํต์ ์ฑ๋ฅ์ด ๋ ์ข๋ค.
'CS > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์กฐ์ธ(Join) (0) | 2023.09.29 |
---|---|
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ์ธ๋ฑ์ค(Index) (0) | 2023.09.28 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ (0) | 2023.09.24 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ํธ๋์ญ์ ๊ณผ ๋ฌด๊ฒฐ์ฑ (0) | 2023.09.20 |
[๋ฐ์ดํฐ๋ฒ ์ด์ค] ๋ฐ์ดํฐ ์ด์ ํ์๊ณผ ์ ๊ทํ ๊ณผ์ (1) | 2023.09.15 |