์ฑ…/real mysql

๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ” - ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”

ballde 2022. 1. 12. 21:35

๐Ÿ‘€  ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ” (DRIVING TABLE)์ด๋ž€?

  • JOIN์‹œ ๋จผ์ € ์•ก์„ธ์Šค ๋ผ์„œ ACCESS PATH๋ฅผ ์ฃผ๋„ํ•˜๋Š”ํ…Œ์ด๋ธ”

๐Ÿ‘€  ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”(DRIVEN TABLE, INNER TABLE)

  • ๋‚˜์ค‘์— ์•ก์„ธ์Šค ๋˜๋Š” ํ…Œ์ด๋ธ”์„ ๋“œ๋ฆฌ๋ธ ํ…Œ์ด๋ธ”(DRIVEN TABLE, INNER TABLE)

์กฐ์ธ์‹œ ์˜ํ–ฅ

  • ์ธ๋ฑ์Šค(INDEX)์˜ ์กด์žฌ ๋ฐ ์šฐ์„ ์ˆœ์œ„ ํ˜น์€ FROM์ ˆ์—์„œ์˜ TABLE ์ง€์ • ์ˆœ์„œ์— ์˜ํ–ฅ์„ ๋ฐ›์Œ
  • ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ, ๋“œ๋ผ์ด๋น™ ํ…Œ์ด๋ธ”์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

์˜ˆ์‹œ

10000๊ฑด์˜ ๋ฐ์ดํ„ฐ A
 5000๊ฑด์˜ ๋ฐ์ดํ„ฐ B

10000๊ฑด์„ ๋จผ์ € ๋“œ๋ผ์ด๋น™ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด -> 10000๋ฒˆ ๋Œ๋ฉด์„œ Bํ…Œ์ด๋ธ” ํƒ์ƒ‰
 5000๊ฑด์„ ๋จผ์ € ๋“œ๋ผ์ด๋น™ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ->  5000๋ฒˆ ๋Œ๋ฉด์„œ ํƒ์ƒ‰

๊ฒฐ์ • ๊ทœ์น™

  1. ๊ทœ์น™๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €(Rule-Based Optimizer, RBO)์—์„œ๋Š” ์—ฐ์‚ฐ์ž, ์ธ๋ฑ์Šค์˜ ์œ ๋ฌด, ์กฐ๊ฑด์ ˆํ˜•ํƒœ ๋“ฑ ์ •ํ•ด์ง„ ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์‹คํ–‰๊ณ„ํš์„ ์ƒ์„ฑ
  • ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ ์•ก์„ธ์Šค ๋ฐฉ์‹์ด ์ „์ฒด ํ…Œ์ด๋ธ” ์•ก์„ธ์Šค ๋ฐฉ์‹๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Œ
  • ์กฐ์ธ ์นผ๋Ÿผ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์–‘์ชฝ ํ…Œ์ด๋ธ”์— ๋ชจ๋‘ ์กด์žฌํ•  ๋•Œ, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ…Œ์ด๋ธ”์„ ์„ ํƒ
  • ์กฐ์ธ ์นผ๋Ÿผ์—๋งŒ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์„ ํƒํ•˜์—ฌ ์กฐ์ธ ์ˆ˜ํ–‰
  • ๋งŒ์•ฝ ์กฐ์ธ ํ…Œ์ด๋ธ”์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋™์ผํ•˜์ง€์•Š๋‹ค๋ฉด, FROM ์ ˆ์— ๋‚˜์—ด๋œ ํ…Œ์ด๋ธ”์˜ ์—ญ์ˆœ์œผ๋กœ ์ˆ˜ํ–‰
  1. ๋น„์šฉ๊ธฐ๋ฐ˜ ์˜ตํ‹ฐ๋งˆ์ด์ €(Cost-Based Optimizer, CBO)๋Š” ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์•„๋‹Œ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์†Œ์š”๋˜๋Š” ์˜ˆ์ƒ ๋น„์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์‹คํ–‰๊ณ„ํš์„ ์ƒ์„ฑํ•œ๋‹ค. ํ†ต๊ณ„์ •๋ณด, DBMS ์„ค์ •์ •๋ณด, DBMS ๋ฒ„์ „ ๋“ฑ์˜ ์ฐจ์ด๋กœ ์ธํ•ด ๋˜‘๊ฐ™์€ SQL๋ฌธ์ด๋ผ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ์‹คํ–‰๊ณ„ํš์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.