Nested loop join, Hash join
Nested loop join, Hash join
Join
Join ์ด๋?
Join์ ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ์ ๊ฒฐํฉํ์ฌ ํ๋์ ํ ์ด๋ธ๋ก ๋ง๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ์ด๋ค.
์ฐ๋ฆฌ๋ ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํจ์ผ๋ก์จ ๋ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ฒ ๋๋ค.
Join ์ ์ธ์ ์ฌ์ฉํ๋?
Join์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ง์ง๋ง, ๋๋ต์ ์ผ๋ก ํฐ ๊ฐ์ง๋ฅผ ๋ป์ด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ฐ์ดํฐ ํตํฉ: ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ถ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ์ฌ ์ข ํฉ์ ์ธ ์ ๋ณด๋ฅผ ์ป๊ณ ์ ํ ๋.
๋ฐ์ดํฐ ๋ถ์: ์๋ก ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ์ฌ ๋ถ์ํ ๋.
๋ฆฌํฌํธ ์์ฑ: ๋ค์ํ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ์ฌ ์๋ก์ด ๋ฐ์ดํฐ ์ ์ ์์ฑํ ๋.
๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทํ๋ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉด์๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์กฐํํ ๋.
Join ์ ์ข
๋ฅ
Join ์ ์ข ๋ฅ์ค, ์๋ ๊ฐ๋ ์ ๋ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์งํ ํ์๊ฐ ์๊ฒ ๋ค.
์ด๋ฏธ์ง๋ ๋ค๋ฅธ ๋ธ๋ก๊ทธ์ ๋ง์ผ๋ ์๋ต.
Inner Join: ๋ ํ ์ด๋ธ์์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ง ๊ฒฐํฉ. ์ผ์นํ์ง ์๋ ๋ฐ์ดํฐ๋ ์ ์ธ.
Outer Join: ๋ ํ ์ด๋ธ์์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ์ผ์นํ์ง ์๋ ๋ฐ์ดํฐ๋ ํฌํจ. Outer Join์ ๋ค์ Left Outer Join, Right Outer Join, Full Outer Join์ผ๋ก ๋๋๋ค.
Left Outer Join: ์ผ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์์ ์ผ์นํ๋ ๋ฐ์ดํฐ.
Right Outer Join: ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ผ์ชฝ ํ ์ด๋ธ์์ ์ผ์นํ๋ ๋ฐ์ดํฐ.
Full Outer Join: ๋ ํ ์ด๋ธ์์ ์ผ์นํ๋ ๋ฐ์ดํฐ์ ์ผ์นํ์ง ์๋ ๋ชจ๋ ๋ฐ์ดํฐ.
Cross Join: ๋ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ๋ฅํ ์กฐํฉ์ ์์ฑ.
Self Join: ๊ฐ์ ํ ์ด๋ธ์ ์๊ธฐ ์์ ๊ณผ ์กฐ์ธํ๋ ๋ฐฉ์.
Nested Loop Join
Nested Loop Join ์ด๋?
Nested Loop Join์ ๋ ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ๋ฅํ ์์ ๋น๊ตํ์ฌ ์กฐ์ธํ๋ ๋ฐฉ์์ด๋ค.
ํ๋์ ํ ์ด๋ธ์ ์ธ๋ถ ๋ฃจํ๋ก, ๋ค๋ฅธ ํ ์ด๋ธ์ ๋ด๋ถ ๋ฃจํ๋ก ์ค์ ํ๊ณ , ์ธ๋ถ ๋ฃจํ์ ๊ฐ ํ์ ๋ํด ๋ด๋ถ ๋ฃจํ์ ๋ชจ๋ ํ์ ๋น๊ตํ๋ค.
์๋๋ ๋ ํ ์ด๋ธ์ Nested Loop Join ์ผ๋ก Join ํ๋ ๋ฐฉ์์ด๋ค.
์ด ์ฟผ๋ฆฌ๋ TableA์ TableB์ ๋ชจ๋ ํ์ ๋น๊ตํ์ฌ key ๊ฐ์ด ์ผ์นํ๋ ํ์ ์กฐ์ธํ๋ค.
๋ง์ฝ TableA์ TableB์ ํ์ด ๊ฐ๊ฐ 1000๊ฐ์ฉ์ด๋ผ๋ฉด, ์ด ์ฟผ๋ฆฌ๋ ์ต๋ 100๋ง ๋ฒ์ ๋น๊ต๋ฅผ ์ํํ๊ฒ ๋๋ค.
์ธ๋ป๋ด๋ ๋นํจ์จ์ ์ด๋ค.
ํน์ง:
๊ฐ๋จํ๊ณ ๊ตฌํ์ด ์ฉ์ด.
์์ ๋ฐ์ดํฐ์ ์ ์ ํฉ.
๋ฐ์ดํฐ์ ์์ด ๋ง์์ง์๋ก ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ์ ํ.
์ ์์ฌํญ:
ํฐ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธ์์๋ ๋นํจ์จ์ .
์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ฉด ์ฑ๋ฅ์ด ๊ฐ์ ๋ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๊ท๋ชจ ๋ฐ์ดํฐ์ ์ด๋ ์ธ๋ฑ์ค๊ฐ ์ ์ค๊ณ๋ ์ํฉ์์ ์ฌ์ฉ.
Hash Join
Hash Join ์ด๋?
Hash Join์ ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ์กฐ์ธํ๋ ๋ฐฉ์.
ํ๋์ ํ ์ด๋ธ์ ํด์ ํ ์ด๋ธ๋ก ๋ณํํ๊ณ , ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ฐ ํ์ ํด์ ํ ์ด๋ธ๊ณผ ๋น๊ตํ์ฌ ์กฐ์ธํ๋ค.
ํน์ง:
๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์ ์ ํฉ.
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ์ฐ์.
๋น๋ ๋จ๊ณ์ ํ๋ก๋ธ ๋จ๊ณ๋ก ๋๋์ด์ง๋ค.
์ ์์ฌํญ:
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํฌ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ค์ํ๋ค.
ํด์ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ํด์ ํจ์์ ์ ํ์ด ์ค์ํ๋ค.
๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ์ ์์ ๋๋ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
ํจ์
๋ค์์ ๋ณต์กํ ์กฐ๊ฑด์ ๊ฐ์ง ์ฟผ๋ฆฌ ์์์ด๋ค.
์ด ์ฟผ๋ฆฌ๋ Nested Loop Join์ผ๋ก ์ธํด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์๋ค.
์ด ์ฟผ๋ฆฌ์ ์คํ ๊ณํ์ ๋ณด๋ฉด ํฌ๊ฒ 3๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ค.
Nested Loop ์กฐ์ธ:
Nested Loop ์กฐ์ธ์ ๊ฐ ํ์ ๋ํด ๋ฐ๋ณต์ ์ผ๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ์ค์บ.
์ด ๊ฒฝ์ฐ,
order_items์orders๊ฐ์ ์กฐ์ธ์ด ๋งค์ฐ ๋ง์ ๋ฐ๋ณต์ ๋ฐ์์์ผ ์ฑ๋ฅ์ด ์ ํ.ํนํ,
ordersํ ์ด๋ธ์์order_date์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ์ ์ฐพ๊ธฐ ์ํด ๋ง์ ๋ฐ๋ณต ์์ ์ด ํ์.
๋ฐ์ดํฐ ์:
productsํ ์ด๋ธ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํ์ด ๋ค์์ผ ๊ฒฝ์ฐ, ๊ฐ ํ์ ๋ํดorder_items์ ์กฐ์ธํ ํ, ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ง์ordersํ ์ด๋ธ ์ ๊ทผ์ด ๋ฐ์ํ ์ ์์.์๋ฅผ ๋ค์ด,
productsํ ์ด๋ธ์์ 200๊ฐ์ ํ์ด ํํฐ๋ง๋๋ค๊ณ ๊ฐ์ ํ๋ฉด, ๊ฐ ํ์ ๋ํดorder_items์ ์กฐ์ธํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ญ๋ง ๋ฒ์ordersํ ์ด๋ธ ์ ๊ทผ์ด ๋ฐ์ํ ์ ์๋ค.
Index Only Scan:
ordersํ ์ด๋ธ์ ๋ํ Index Only Scan์ด ๋ฐ๋ณต๋๋ฉด์ ๋ง์ I/O ์์ ์ด ๋ฐ์ํ ์ ์๋ค.์ ์ฟผ๋ฆฌ๋ Nested Loop Join์ ํตํด ๋ง์ ๋ฐ์ดํฐ ํ์ ๋ฐ๋ณต์ ์ผ๋ก ์ค์บ.
๊ฐ์ฅ ํด๊ฒฐ์ด ํ์ํ ๋ถ๋ถ์ ์์ญ๋ง ๋ฒ์
ordersํ ์ด๋ธ ์ ๊ทผ.
์ต์ ํ ๋ฐฉ์
Nested Loop Join์ ํผํ๊ณ , Hash Join์ ์ฌ์ฉํ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํด๋ณด์. ๋ํ, WITH ์ ์ ์ด์ฉํ์ฌ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํด๋ณด์.
Hash Join์ ์ฌ์ฉํ๋๋ก ์ฟผ๋ฆฌ ์์ฑ:
Hash Join์ ์ ๋ํ๊ธฐ ์ํด, ๋ฐ์ดํฐ์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ WITH ์ ์ ์ฌ์ฉํ์ฌ ๋จผ์ ๊ณ์ฐํด๋ณด์.
์ด๋ ๊ฒ ํ๋ฉด, products์ orders ํ
์ด๋ธ์์ ๋จผ์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์กฐ์ธํ ์ ์๋ค.
์ด๋ก์จ, ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋จผ์ ์์ฑํ์ฌ ์กฐ์ธ์ ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
์ต์ ํ ๊ฒฐ๊ณผ ๋ถ์
WITH ์ ์ฌ์ฉ: ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ฌ ์กฐ์ธ์ ๋ฒ์๋ฅผ ์ค์ฌ๋ณด์. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ํ ์ด๋ธ์์ ๋จผ์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ ํ ์กฐ์ธํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๋ฐ์ดํฐ์ ์ ๋ฐ๋ณต์ ์ผ๋ก ์ค์บํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค.
Hash Join ์ ๋: ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ฉด, DBMS๋ ๋ ํฐ ์กฐ์ธ ๊ฒฐ๊ณผ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด Hash Join์ ์ ํํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
์ฑ๋ฅ ํฅ์: ๋ฐ์ดํฐ์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํจ์ผ๋ก์จ, ์ ์ฒด ์ฟผ๋ฆฌ์ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋ ์ ์๋ค. ํนํ, ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์ ํจ๊ณผ์ ์ด๋ค.
์์ ์ต์ ํ๋ ์ฟผ๋ฆฌ๋ฅผ ํตํด ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๊ณ , ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ธํ ์ ์๋ค.
์ด๋ ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์ ์ค์ํ ์ต์ ํ ๊ธฐ๋ฒ์ด๋ค.
Last updated