๐Ÿ€ DB Join

eunsiverยท2023๋…„ 5์›” 10์ผ
0

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
9/9

DB Join์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ณ , ๊ฐ๊ฐ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

โ€ข ์‚ฌ์‹ค, JOIN์€ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ์— ๋‚ด๋ถ€์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์˜ˆ์‹œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.
โ€ข ๊ทธ๋ ‡๋‹ค๋ฉด ์ž…๋ ฅํ•œ ์ฟผ๋ฆฌ์—์„œ ์–ด๋–ค ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š”์ง€๋Š” ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”?
โ€ข ์•ž ์งˆ๋ฌธ๋“ค์„ ํ†ตํ•ด ์ธ๋ฑ์Šค์˜ ์ค‘์š”์„ฑ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด JOIN์˜ ์„ฑ๋Šฅ๋„ ์ธ๋ฑ์Šค์˜ ์œ ๋ฌด์˜ ์˜ํ–ฅ์„ ๋ฐ›๋‚˜์š”?


๐Ÿฅjoin(์กฐ์ธ)

  • ๋‘˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ”๋“ค์ด ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ์–ด์•ผํ•จ
  • ์ด ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ์„ PK ๋˜๋Š” FK๊ฐ’์œผ๋กœ ์‚ฌ์šฉ

  1. INNER JOIN : ๋‚ด๋ถ€์กฐ์ธ ->๊ต์ง‘ํ•ฉ
  2. LEFT/RIGHT JOIN -> ๋ถ€๋ถ„์ง‘ํ•ฉ
  3. OUTER JOIN : ์™ธ๋ถ€์กฐ์ธ ->ํ•ฉ์ง‘ํ•ฉ
    ์˜ค๋ผํด์€ OUTER JOIN์žˆ์ง€๋งŒ, MYSQL์€ ์—†์–ด์„œ LEFT์กฐ์ธ + RIGHT์กฐ์ธ

๐Ÿญ Join ์„ฑ๋Šฅ ๊ฐœ์„  ํ•„์š”์„ฑ

์ด๋ ‡๋“ฏ Join ์˜ ๋ชฉ์ ์€ ๋‘˜ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, n๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ joinํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, n๊ฐœ์˜ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ๊ณผ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋ฏ€๋กœ joinํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.

๋ฌผ๋ก  ๋ฐ์ดํ„ฐ์–‘์ด ๋งŽ์•„๋„ ์ฟผ๋ฆฌ์˜ ์†๋„๋Š” ํ˜„์ €ํ•˜๊ฒŒ ๋Š๋ ค์ง„๋‹ค.

์กฐ์ธ์ด ์–ด๋–ค ์›๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์•Œ์•„๋ณด๊ณ  ํšจ์œจ์ ์ธ ์กฐ์ธ์˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!


๐Ÿ‘‹๐Ÿป ๊ฒฐํ•ฉ(Join) ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์„ฑ๋Šฅ

SQL์—์„œ ์กฐ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ์„ ํƒ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Nested Loops Join
  2. Hash Join
  3. Sort Merge Join

๋ฌผ๋ก  ๋” ๋งŽ์€ ์กฐ์ธ ๋ฐฉ์‹์ด ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์„ธ๊ฐ€์ง€ ๋ฐฉ์‹์ด๋‹ค.


๐Ÿ•ต๐Ÿปโ€โ™‚๏ธ ์˜ตํ‹ฐ๋งˆ์ด์ €

์ € ๊ฒฐํ•จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ• ์ง€๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ, ๊ฒฐํ•ฉํ‚ค(Key), ์ธ๋ฑ์Šค(Index)์™€ ๊ฐ™์€ ์š”์ธ์— ๋”ฐ๋ผ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์„œ ์‹คํ–‰์„ ์‹œํ‚ค๋ฉด ๊ทธ ์ฟผ๋ฆฌ๋Š” ์˜ตํ‹ฐ๋งˆ์ด์ €(Optimizer)๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

  • ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” "์ตœ์ ํ™”" ๋ผ๋Š” ์˜๋ฏธ์ธ๋ฐ, '๋ฐ์ดํ„ฐ์— ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ• ์ง€'๊ฐ€ ์ตœ์ ํ™”์˜ ๋Œ€์ƒ์ด ๋ฉ๋‹ˆ๋‹ค.

  • ์ด๋•Œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ, ์ธ๋ฑ์Šค ์œ ๋ฌด ๋“ฑ์˜ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ๊ณ ๋ คํ•ด์„œ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ๋งŽ์€ '์‹คํ–‰๊ณ„ํš'์„ ์ž‘์„ฑํ•˜๊ณ , ๊ฐ ์„ ํƒ์ง€์˜ ๋น„์šฉ์„ ์—ฐ์‚ฐํ•˜๊ณ , ๊ฐ€์žฅ ๋‚ฎ์€ ๋น„์šฉ์„ ๊ฐ€์ง„ ์‹คํ–‰๊ณ„ํš์„ ์„ ํƒํ•ด์ค๋‹ˆ๋‹ค.

  • ์ฆ‰, ์—ฌ๋Ÿฌ ๊ฒฐ๊ณผ ๋„์ถœ ๋ฐฉ๋ฒ• ์ค‘ ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ์ข‹์€ ๊ณ„ํš์„ ์„ ํƒํ•ด์ฃผ๋Š” ๋„๊ตฌ๋ผ๊ณ  ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.


์ด ์ค‘ Nested Loops Join ์€ ๋‹ค๋ฅธ ๊ฒฐํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜์€ Nested Loops Join ์„ ์ค‘์ ์œผ๋กœ ์‚ดํŽด๋ณด์ž.

๐Ÿคน๐Ÿปโ€โ™€๏ธ Nested Loops Join

Nested Loops Join์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์ค‘์ฒฉ ๋ฐ˜๋ณต์„ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

Nested Loops Join ์˜ ์›๋ฆฌ

  1. Table A์™€ Table B ๊ฐ€ ์–ด๋–ค Key ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฒฐํ•ฉ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. Table A (๊ตฌ๋™ ํ…Œ์ด๋ธ”, Driving Table) ์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰์—์„œ ์ถœ๋ฐœํ•ด Table B (๋‚ด๋ถ€ ํ…Œ์ด๋ธ”, Inner Table) ์˜ ๋ชจ๋“  ํ–‰์„ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฒฐํ•ฉ ์กฐ๊ฑด์ด ๋งž์œผ๋ฉด ๊ฐ’์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

  3. Table A ์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰์˜ ์Šค์บ”์ด ๋๋‚˜๋ฉด ๋‘ ๋ฒˆ์งธ ํ–‰์ด Table B ์˜ ๋ชจ๋“  ํ–‰์„ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค.

  4. 2~3๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ Table A ์˜ ๋งˆ์ง€๋ง‰ ํ–‰์ด Table B ์˜ ๋ชจ๋“  ํ–‰์„ ์Šค์บ”ํ•˜๋ฉด ๊ฒฐํ•ฉ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๐Ÿฆ„ ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ๋ฒ•

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์ค‘์ฒฉ for ๋ฌธ์˜ ์›๋ฆฌ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Table A, Table B ์˜ ๊ฒฐํ•ฉ ๋Œ€์ƒ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋ฅผ R(A), R(B) ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ ‘๊ทผ๋˜๋Š” ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” R(A) X R(B) ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์กฐ๊ธˆ ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด ๊ฒฐ๊ตญ Nested Loops Join ์—์„œ ์‹คํ–‰์‹œ๊ฐ„์€ R(A) X R(B)์— ๋น„๋ก€ํ•˜๊ฒŒ๋˜๊ณ ,
์„ฑ๋Šฅ์„ ๋†’ํžˆ๊ธฐ ์œ„ํ•ด์„  R(A) X R(B) ์˜ ๊ฐ’์„ ๋‚ฎ์ถฐ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์„ฑ๋Šฅ์„ ๋†’ํž ์ˆ˜( = R(A) X R(B) ๊ฐ’์„ ๋‚ฎ์ถœ ์ˆ˜) ์žˆ์„๊นŒ์š”?

์œ„ ์กฐ๊ฑด์„ ๋”ฐ๋ฅด๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ™„ ๊ตฌ๋™ํ…Œ์ด๋ธ”(Driving Table)๊ณผ ๋‚ด๋ถ€ํ…Œ์ด๋ธ”(Inner Table)

๊ตฌ๋™ํ…Œ์ด๋ธ”(Driving Table)

  • ์กฐ์ธ์ด ์ง„ํ–‰๋  ๋•Œ ๋จผ์ € ์•ก์„ธ์Šค ๋˜์–ด Access Path ๋ฅผ ์ฃผ๋„ํ•˜๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค
  • ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด๋ณด๋ฉด ์ฃผ๋„์ ์œผ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ฒฐํ•ฉํ‚ค์— ๋‹ค๊ฐ€๊ฐ€์„œ ๋งค์นญ์„ ์‹œ๋„ํ•˜๋Š” ํ…Œ์ด๋ธ”
  • ์œ„ ๊ทธ๋ฆผ์—์„œ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด Table A ์˜ ํ–‰์—์„œ ์ถœ๋ฐœํ•ด Table B ์˜ ๊ฐ ํ–‰๋“ค์„ ์Šค์บ”ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๊ฒฝ์šฐ Table A ๊ฐ€ ๊ตฌ๋™ํ…Œ์ด๋ธ”(Driving Table) ์ด ๋˜๊ณ  Table B ๋Š” ๋‚ด๋ถ€ํ…Œ์ด๋ธ”(Inner Table)์ด ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค(Index)

  • TABLE์˜ ์ปฌ๋Ÿผ์„ ์ƒ‰์ธํ™”(๋”ฐ๋กœ ํŒŒ์ผ๋กœ ์ €์žฅ)ํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ๊ฒ€์ƒ‰์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  • ๊ฒ€์ƒ‰์‹œ ํ•ด๋‹น TABLE์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ Full Scan ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒ‰์ธํ™” ๋˜์–ด์žˆ๋Š” INDEX ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ฒ€์ƒ‰์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๋‹ค์‹œ ๊ฒฐ๋ก ์œผ๋กœ,,,,,

์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์˜ Nested Loops Join
๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์˜ ๊ฒฐํ•ฉํ‚ค์— ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋˜๋ฉด Driving Table ์—์„œ Inner Table ๋กœ ์Šค์บ”์„ ํ•˜๋Ÿฌ ๊ฐˆ ๋•Œ ๋ชจ๋“  ํ–‰์— ๋Œ€ํ•ด ์Šค์บ”์„ ํ•  ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, R(A) * R(B) ์˜ ๊ฐ’์ด ์ค„์–ด๋“ ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ์ด๋Ÿฐ ์›๋ฆฌ๋กœ ์‹คํ–‰์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿง ๊ตฌ๋™ํ…Œ์ด๋ธ”์ด ์–ด๋–ป๊ฒŒ ์„ ํƒ๋˜๋Š”๊ฐ€?

1. ์˜ตํ‹ฐ๋งˆ์ด์ €์— ์˜ํ•œ ๊ฒฐ์ •(Inner Join)

  • ๊ตฌ๋™ํ…Œ์ด๋ธ”์€ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์ตœ์ ์˜ ์‹คํ–‰๊ณ„ํš์— ๋”ฐ๋ผ ๊ฒฐ์ •์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ์ตœ์ ์˜ ์‹คํ–‰๊ณ„ํš์€ ์œ„์˜ "๊ตฌ๋™ํ…Œ์ด๋ธ”์ด ์ž‘๊ณ  ๋‚ด๋ถ€ํ…Œ์ด๋ธ” ๊ฒฐํ•ฉํ‚ค์— ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ" ๋ผ๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‹คํ–‰ ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๋งŒ์•ฝ ๋‘ ํ…Œ์ด๋ธ” ๋ชจ๋‘ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์—†๋‹ค๋ฉด ๋ ˆ์ฝ”๋“œ ์ˆ˜์— ๋”ฐ๋ผ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์•Œ์•„์„œ ๊ตฌ๋™ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์˜ตํ‹ฐ๋งˆ์ด์ €๋ฅผ ๋ฏฟ๊ณ  join ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • Inner Join ์˜ ๊ฒฝ์šฐ ์–ด๋Š ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ฝ์–ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์กฐ์ธ์˜ ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„ ๊ทœ์น™๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ตฌ๋™ํ…Œ์ด๋ธ”์ด ์ •ํ•ด์ง€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


2. Outer Join์—์„œ ๊ตฌ๋™ํ…Œ์ด๋ธ” ์„ ํƒ

  • Outer Join์€ ๋ฐ˜๋“œ์‹œ Outer ๊ฐ€ ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ฝ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ์กฐ์ธ์˜ ์ˆœ์„œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ฆ‰, Left Outer Join ์ผ ๋• ์™ผ์ชฝ ํ…Œ์ด๋ธ”์ด, Right Outer Join ์ผ ๋• ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์ด ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”์ด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿฅณ ์ถ”๊ฐ€> ์‹คํ–‰๊ณ„ํš์„ ์˜ตํ‹ฐ๋งˆ์ด์ €์— ๋งก๊ฒจ๋„ ์ตœ์ ์˜ ์‹คํ–‰๊ณ„ํš์ด ์„ ํƒ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๋•Œ

  • ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ๋Š” ์žฅ๊ธฐ์ ์ธ DB ์šด์šฉ์ค‘์— ๋ฐ์ดํ„ฐ์–‘์˜ ์ฆ๊ฐ€ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ๋ณ€ํ•ด ์‹คํ–‰๊ณ„ํš์ด ์•ˆ์ข‹์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

  • ๊ทธ๋ฆฌ๊ณ  ํŠนํžˆ Join ์€ ์‹คํ–‰๊ณ„ํš์— ๋ณ€๋™์ด ์ผ์–ด๋‚˜- ๊ธฐ ๊ฐ€์žฅ ์‰ฌ์šด ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.

  • ์กฐ์ธ ์‹œ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋ณ€ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ

SQL ์ฟผ๋ฆฌ์—์„œ ์ตœ๋Œ€ํ•œ ๊ฒฐํ•ฉ(Join)์„ ํ”ผํ•˜๊ณ  ์กฐ์ธ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ˆ˜๋‹จ์„ ์ž˜ ํ™œ์šฉํ•˜์ž!



์ฐธ๊ณ 
https://pearlluck.tistory.com/46
https://rebro.kr/167
https://velog.io/@leesomyoung/SQL-Join-%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0%ED%95%98%EA%B8%B0
https://schatz37.tistory.com/2 (๊ฐ•์ถ”!!)

profile
Let's study!

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด