์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๊ฐœ๋ฐœ์„œ์ /์นœ์ ˆํ•œ SQL ํŠœ๋‹

์ธ๋ฑ์Šค ํŠœ๋‹

2023. 10. 14. 13:54

์กฐ์‹œํ˜•๋‹˜์˜ ์นœ์ ˆํ•œ SQL ํŠœ๋‹์„ ์ฝ๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.


์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ •

๋จผ์ €, ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์ด ์บ์‹ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

์บ์‹ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด, ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์—์„œ ์ธ๋ฑ์Šค ์กฐ๊ฑด์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด, ํ•ด๋‹น ์กฐ๊ฑด์— ๋งž๋Š” ์‹ค์ œ ๋””์Šคํฌ ์ƒ ๋ ˆ์ฝ”๋“œ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.(ROWID)

 

์‹ค์ œ ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ๋””์Šคํฌ ์ƒ ๋ ˆ์ฝ”๋“œ์˜ ์œ„์น˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธ”๋ก์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ, ํ•ด๋‹น ๋ธ”๋ก์ด ์ด๋ฏธ ๋ฒ„ํผ์— ์บ์‹ฑ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์บ์‹ฑ๋œ ๋ธ”๋ก์— ์ ‘๊ทผํ•ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค.

 

๋งŒ์•ฝ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‹ค์ œ ๋””์Šคํฌ๋กœ ์ ‘๊ทผํ•œ๋‹ค.

 

๋ฒ„ํผ์—์„œ๋Š” ํ…Œ์ด๋ธ” ๋ธ”๋ก ์œ„์น˜ ๊ฐ’์„ ํ•ด์‹ฑํ•˜์—ฌ ๊ณ ์œ ํ•œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ ํ›„ ๊ด€๋ฆฌํ•œ๋‹ค. 

๊ทธ ๊ณผ์ •์—์„œ, ํ•ด์‹ฑ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ฐ”๋กœ ์ฃผ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ ๋ฐฉ์‹๋ณด๋‹ค๋Š” ๋А๋ฆฌ๋‹ค.

ํฌ์ธํ„ฐ๋Š” ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๋ฉด, ์ธ๋ฑ์Šค๋Š” ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•œ ๋ธ”๋ก ์ •๋ณด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค๊ฐ€ ํšจ์œจ์ ์ธ ์ด์œ 

์ผ๋ฐ˜์ ์ธ ์ธ๋ฑ์Šค๋Š” ์ธ๋ฑ์Šค ์ƒ์œผ๋กœ๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์ง€๋งŒ, 

 

๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธ”๋ก์˜ ์œ„์น˜๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์„ ํ•˜๊ฒŒ๋˜๋ฉด

 

๋žœ๋ค I/O ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

์ธ๋ฑ์Šค์— ๋”ฐ๋ผ ์‹ค์ œ ํ…Œ์ด๋ธ”์˜ ๋ฌผ๋ฆฌ์  ์ฃผ์†Œ๋„ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

 

ํด๋Ÿฌ์Šคํ„ฐ๋ง ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋žœ๋ค ๋ธ”๋ก I/O๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ก DBMS๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ…Œ์ด๋ธ” ๋ธ”๋ก์„ ์—‘์„ธ์Šค ํ•œ ํ›„, ์ผ๋‹จ ์œ ์ง€ํ•ด๋‘”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ…Œ์ด๋ธ” ๋ธ”๋ก๊ณผ ์ด์ „์— ์—‘์„ธ์Šค ํ–ˆ๋˜ ํ…Œ์ด๋ธ” ๋ธ”๋ก์ด ์ผ์น˜ํ•˜๋ฉด, ํ…Œ์ด๋ธ” ๋ธ”๋ก์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ํ•ด์‹ฑํ•ด์„œ ํ•ด์‹ฑ๋œ ๊ฐ’์ด ๋ฒ„ํผ ์บ์‹œ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ ํ…Œ์ด๋ธ”์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ธ๋ฑ์Šค ์Šค์บ”์€ ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ”๋ณด๋‹ค ํ•ญ์ƒ ํšจ์œจ์ ?

 

๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

 

ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ”์˜ ๊ฒฝ์šฐ ์‹œํ€€์…œ ์—‘์„ธ์Šค์ด๊ณ  ์ธ๋ฑ์Šค ์Šค์บ”์€ ๋žœ๋ค ์—‘์„ธ์Šค์ด๋‹ค.

 

ํ…Œ์ด๋ธ” ํ’€ ์Šค์บ”์˜ ๊ฒฝ์šฐ๋Š” ์กฐ๊ฑด์ ˆ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ์ผ์ •ํ•œ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค ์Šค์บ”์€ ์กฐ๊ฑด์ ˆ์— ํ•ด๋‹นํ•˜๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋ฐœ๊ฒฌ๋ ์ˆ˜๋ก, ์ธ๋ฑ์Šค์™€ ์—ฐ๊ฒฐ๋œ ๋ธ”๋ก์„ ๋žœ๋ค ์—‘์„ธ์Šค ํ•ด์•ผํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์€ ๋žœ๋ค I/O๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ธ๋ฐ, ์ธ๋ฑ์Šค ์Šค์บ”์˜ ๊ฒฝ์šฐ ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋Š” ์•ฝ๊ฐ„์˜ ๋žœ๋ค I/O๋งŒ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋žœ๋ค I/O ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ๋˜๋ฏ€๋กœ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์„œ ๋žœ๋ค I/O๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•

 

 

์œ„์™€ [DEPTNO + JOB] ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•œ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

 

๋งŒ์•ฝ, 

 

SELECT
	*
FROM
	emp
WHERE
	deptno = 30
AND
	sal >=2000

 

์œ„ ์ฟผ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค๋ฉด,

 

 

์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์˜ deptno 30 ์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ธ๋ฑ์Šค ๋ ˆ์ธ์ง€ ์Šค์บ”์„ ํ•ด์„œ

 

์ง์ ‘ ํ…Œ์ด๋ธ” ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๊ฐ€์„œ sal ์ด 2000 ์ด์ƒ์ธ์ง€ ํ™•์ธํ•  ๊ฒƒ์ด๋‹ค.

 

์ด 4๋ฒˆ์˜ ๋žœ๋ค I/O ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ธ๋ฑ์Šค์— sal ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด

 

 

deptno ๊ฐ€ 30 ์ธ ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ ˆ์ธ์ง€ ์Šค์บ”ํ•˜๋Š” ๋ฒ”์œ„๋Š” ๋‹ฌ๋ผ์ง€์ง€ ์•Š์ง€๋งŒ

 

์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์—์„œ sal ๊ฐ’๋„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์˜ ๋žœ๋ค I/O๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

    '๊ฐœ๋ฐœ์„œ์ /์นœ์ ˆํ•œ SQL ํŠœ๋‹' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • Where ์กฐ๊ฑด ์ ˆ์—์„œ Between ๊ณผ in ์˜ ์ฐจ์ด
    • ๋ฐฐ์น˜ I/O์™€ ์ธ๋ฑ์Šค๋ฅผ ๋ฏฟ๊ณ  ์ฟผ๋ฆฌ์— ORDER BY๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 
    • ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ ๊ฒฐ์ •๊ณผ ๊ฐ€๊ณต
    • SQL ์ฒ˜๋ฆฌ ๊ณผ์ •๊ณผ I/O
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”