๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/SQL

[Oracle] SQL ํ•จ์ˆ˜

by OR15A 2024. 1. 6.
NVL ํ•จ์ˆ˜
  • NULL๊ฐ’์„ ํฌํ•จํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ง€์ •๋œ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š”๋ฐ ์‚ฌ์šฉ.
  • ์ผ์‹œ์ ์œผ๋กœ NULL์ธ ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ๋Œ€์ฒดํ•˜๊ธฐ์œ„ํ•œ๊ฒƒ
  • NVLํ•จ์ˆ˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐํƒ€์ž…์— ์ ์šฉ ๊ฐ€๋Šฅ.
  • NVLํ•จ์ˆ˜๋Š” ์‚ฌ์šฉํ•  ๋•Œ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐํƒ€์ž…๊ณผ ์ผ์น˜ํ•ด์•ผํ•จ.
NVL ( A, B )
A: NULL๊ฐ’์„ ํฌํ•จํ•˜๊ณ ์žˆ๋Š” ์ปฌ๋Ÿผ/์‹ B: ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ฐ’ (๋Œ€์ฒดํ•  ๊ฐ’)
NVLํ•จ์ˆ˜์˜ ๋ฌธํ˜• ์ „ํ™˜ ์˜ˆ์‹œ
NUMBER NVL( commission_pct , 0 )
DATE NVL( start_date, ‘17/01/01’ )
CHAR,
VARVHAR2
NVL( mailid , ‘์—†์Œ’ )
  • ๋ฏธ๊ตญํ‘œ์ค€์ธ COALESCE ํ•จ์ˆ˜๋„ ๊ฐ™์€ ๊ธฐ๋Šฅ.

 

 

 

DECODE ํ•จ์ˆ˜
  • ์˜ค๋ผํด ์‹œ๊ทธ๋‹ˆ์ณ ํ•จ์ˆ˜.
  • ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜.
DECODE ( ํ˜•์‹, ๋น„๊ต๊ฐ’1, ๊ฒฐ๊ณผ๊ฐ’1, ๋น„๊ต๊ฐ’2, ๊ฒฐ๊ณผ๊ฐ’2, ... ๊ธฐ๋ณธ๊ฐ’)
ํ˜•์‹ ๋น„๊ต๊ฐ’1 ๊ฒฐ๊ณผ๊ฐ’1 ๊ธฐ๋ณธ๊ฐ’
์ปฌ๋Ÿผ์ด๋‚˜ ๊ฐ’ ํ˜•์‹์ด
๋น„๊ต๊ฐ’
1์—
๋งž๋Š”์ง€
๋น„๊ต
ํ˜•์‹=๋น„๊ต๊ฐ’1
์ผ ๋•Œ
๊ฐ–๋Š” ๊ฐ’
ํ˜•์‹์ด ๋น„๊ต๊ฐ’๋“ค๊ณผ
๋งž์ง€ ์•Š์„ ๋•Œ ๊ฐ–๋Š” ๊ฐ’.
์ƒ๋žต๋  ์ˆ˜ ์žˆ์Œ.
์ƒ๋žต์ด๋ฉด NULL.

DECODE ์˜ˆ์‹œ

  • ์ž๋ฐ”์˜ switch๋ฌธ ๊ฐ™์€ ๊ฒƒ.

 

 

CASE๋ฌธ
  • DECODE ํ•จ์ˆ˜๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Œ.

 

 

 

PIVOT ํ•จ์ˆ˜
  • ๋ฐ์ดํ„ฐ๋ฅผ ํ”ผ๋ด‡ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์คŒ.

PIVOT ํ•จ์ˆ˜

  • PIVOTํ•จ์ˆ˜๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, DECODEํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ

 

 

 

 

ROLLUP ํ•จ์ˆ˜
  • ๊ทธ๋ฃน๋ณ„ ํ•ฉ๊ณ„๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ•จ์ˆ˜.
  • GROUP BY์ ˆ์—์„œ ์‚ฌ์šฉํ•จ.
  • GROUP BY์ ˆ์—์„œ ์ง€์ •ํ•œ ์ปฌ๋Ÿผ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ฆ.

ROLLUP ํ•จ์ˆ˜

 

 

 

CUBE ํ•จ์ˆ˜
  • ๊ทธ๋ฃน๋ณ„ ํ•ฉ๊ณ„๋ฅผ ๋ณด์—ฌ์คŒ. -GROUP BY์ ˆ์—์„œ ์‚ฌ์šฉ
  • GROUP BY์ ˆ์—์„œ ์ง€์ •ํ•œ ๋ชจ๋“  ์นผ๋Ÿผ์˜ ์กฐํ•ฉ์— ๋Œ€ํ•ด ์ง‘๊ณ„๋ฅผ ์ˆ˜ํ–‰.
  • ๋‹ค์ฐจ์› ์ง‘๊ณ„, ๋‹ค์ฐจ์› ๋ถ„์„์„ ์œ„ํ•ด ์‚ฌ์šฉํ•จ. ROLLUPํ•จ์ˆ˜์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋ณด๋‹ค ๋” ์ƒ์„ธํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•จ.
  • REPORTํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์žฅํ‘œ ์ž‘์„ฑ์— ์‚ฌ์šฉํ•จ.

CUBE ํ•จ์ˆ˜

 

 

 

RANK ํ•จ์ˆ˜
  • ํ–‰๋ณ„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๋ณด์—ฌ์คŒ

RANK ํ•จ์ˆ˜

  • ๊ทธ๋ฃน๋ณ„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ

๊ทธ๋ฃน๋ณ„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐ

 

 

 

์ƒ๊ด€ ์ฟผ๋ฆฌ Correlated SubQuery
โžก๏ธ โžก๏ธ โžก๏ธ

โฌ†๏ธ
โฌ†๏ธ
โฌ†๏ธ
โฌ†๏ธ
โฌ†๏ธ
โฌ†๏ธ
โฌ†๏ธ


โฌ…๏ธ โฌ…๏ธ โฌ…๏ธ
GET
candidate row holding
 
EXCUTE
candidate row๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ
innerQuery๋ฅผ ์ˆ˜ํ–‰ํ•จ
 
USE
innerQuery์˜ ๊ฐ’์ด candidate row์—
๋งŒ์กฑํ•˜๋Š” ๊ฐ’์„ ์„ ํƒ
  • OuterQuery์˜ candidate row๊ฐ€ ๋” ์ด์ƒ ๋‚จ์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•จ.
  • ์ƒ๊ด€ ์ฟผ๋ฆฌ๋Š” ๋ฐ”๊นฅ ์ฟผ๋ฆฌ์˜ ๊ฐ ํ–‰์— ๋Œ€ํ•ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์ผ์น˜ํ•˜๋Š” ํ–‰์ด ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋จ.
  • ๋ฉ”์ธ์ฟผ๋ฆฌ์™€ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์„œ๋กœ ๊ด€๋ จ ์žˆ๋Š” ๊ฒƒ.

 

 

์ƒ๊ด€ ์ฟผ๋ฆฌ์˜ ํŠน์ง•
  1. ๋ฉ”์ธ์ฟผ๋ฆฌ๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰๋จ
  2. ์ด ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ ๊ฐ€์ ธ๋‹ค ์”€

 

 

๋ฉ€ํ‹ฐ ๋กœ์šฐ ๋น„๊ต ์—ฐ์‚ฐ์ž(๋‹ค์ค‘ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž)
IN List์— ์žˆ๋Š” ๊ฐ’์—์„œ ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด ์ฐธ(true)
NOT IN List์žˆ๋Š” ๊ฐ’๊ณผ ๊ฐ™์ง€ ์•Š์€์ง€ ๋น„๊ต. ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ๊ฑฐ์ง“(false) ๋ฐ˜ํ™˜.
ANY ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ Return๋˜๋Š” ๊ฐ’ ์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด true
ALL ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ Return๋˜๋Š” ๋ชจ๋“  ๊ฐ’์„ ๋น„๊ต. ๋ชจ๋“  ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ์ฐธ(true)
EXISTS ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋งŒ์กฑ๋˜๋Š” ๊ฐ’์ด ๋ฐœ๊ฒฌ๋˜๋ฉด true๊ฐ€ ๋˜๋ฉฐ, InnerQuety์—์„œ์˜ ๊ฒ€์ƒ‰ ์ข…๋ฃŒ.
NOT EXISTS ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋งŒ์กฑ๋˜๋Š” ๊ฐ’์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด true๊ฐ€ ๋˜๋ฉฐ, InnerQuety์—์„œ์˜ ๊ฒ€์ƒ‰ ์ข…๋ฃŒ.

 

 

์ƒ๊ด€์ฟผ๋ฆฌ ์˜ˆ์ œ

์™ธ๋ถ€์ฟผ๋ฆฌ=๋ฉ”์ธ์ฟผ๋ฆฌ

 

 

์—ฐ์‚ฐ์ž๋“ค์˜ ์ฐจ์ด์ 
IN ANY EXISTS
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€
์ž‘์€ ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•จ.
๋น„๊ต ์—ฐ์‚ฐ์ž์™€
ํ•จ๊ป˜ ์‚ฌ์šฉ๋จ.
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ํฐ ๊ฒฝ์šฐ
๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•จ
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ
๊ฒ€์ƒ‰ํ•œ ํ›„์— ์ฐธ/๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•จ.
๋งŒ์กฑํ•˜๋Š” ๊ฐ’์„ ํ•˜๋‚˜๋ผ๋„ ์ฐพ์œผ๋ฉฐ
์‹คํ–‰์„ ์ค‘์ง€ํ•˜๊ณ  ์ฐธ์„ ๋ฐ˜ํ™˜ํ•จ.
(๊ฒ€์ƒ‰์„ ์ข…๋ฃŒํ•จ)
NOT IN NOT EXISTS
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๋ผ๋„ NULL์ด๋ฉด ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ๋ชจ๋“  ํ–‰์— ๋Œ€ํ•ด ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ด์„œ ์ œ๋Œ€๋กœ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Œ. ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ํ–‰๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ NOT EXISTS๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์—
NULL ๊ฐ’์ด ์žˆ์–ด๋„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•จ.
NOT IN ๊ฐ€ ์™ธ๋ถ€ ์ฟผ๋ฆฌ์˜ ๊ฐ ํ–‰๋งˆ๋‹ค ์‹คํ–‰๋˜๋ฉฐ,
์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜๋ผ๋„ NULL์ด๋ฉด
ํ•ด๋‹น ํ–‰์— ๋Œ€ํ•ด ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ
 

 

 

 

๋‹ค์ค‘ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž – ANY
  • ๋ณธ์ธ์˜ ๊ธ‰์—ฌ๊ฐ€ ๊ฐ ๋ถ€์„œ๋ณ„ ํ‰๊ท  ๊ธ‰์—ฌ ์ค‘ ์–ด๋Š ํ•œ ๋ถ€์„œ์˜ ํ‰๊ท  ๊ธ‰์—ฌ๋ณด๋‹ค ์ ์€ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›๋Š” ์ง์›์— ๋Œ€ํ•ด ์ด๋ฆ„, ๊ธ‰์—ฌ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

 

๋‹ค์ค‘ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž – EXISTS
  • ๋ณธ์ธdl ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๊ด€๋ฆฌ์ž๋กœ ๋˜์–ด์žˆ๋Š” ์ง์›์˜ ์‚ฌ๋ฒˆ, ์ด๋ฆ„, ์ง์ฑ… ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด์‹œ์˜ค.

 

 

๋‹ค์ค‘ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž – NOT EXISTS
  • ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ SEARCH์ข…๋ฃŒ.
  • NOT IN์—ฐ์‚ฐ์ž์™€ ๊ฑฐ์˜์œ ์‚ฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•จ.
  • NOT EXISTS ์—ฐ์‚ฐ์ž๋Š” ํŠนํžˆ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ  NULL๊ฐ’์ด RETURN ๋  ๋•Œ ์œ ์šฉํ•จ.
  • NOT IN์ธ ๊ฒฝ์šฐ์—๋Š” NULL๊ฐ’์ด RETURN๋  ๋•Œ๊นŒ์ง€ FALSE๊ฐ€ ๋จ.

 

 

 

Pseudo column(๊ฐ€์ƒ์ปฌ๋Ÿผ) - RowId, RowNum
RowId -ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐ ํ–‰์˜ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์†Œ(์ €์žฅ์œ„์น˜)๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์ง€์ •ํ•จ.
-RowId๋ฅผ ์•Œ๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํ•œ ๊ฑด์„ ์—‘์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ.
-๊ฐ ํ–‰์ด ์กด์žฌํ•˜๋Š” ๋™์•ˆ์€ ๋ถˆ๋ณ€๊ฐ’.
RowNum -์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ ํ–‰๋“ค์— ๋Œ€ํ•ด ํ…Œ์ด๋ธ”์—์„œ ์„ ํƒ๋œ ์ˆœ์„œ๋กœ RowNum์ด ์ง€์ •๋จ.
-์ฟผ๋ฆฌ์— ์˜ํ•ด์„œ Return๋˜๋Š” ํ–‰์˜ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•จ.

 

 

 

๊ฐ€์ƒ์ปฌ๋Ÿผ - RowId

-RowId๋Š” ํ•œ ํ–‰์˜ ๊ณ ์œ ํ•œ ๋ฌผ๋ฆฌ์ ์ฃผ์†Œ(์ €์žฅ์œ„์น˜)

RowId
80bit(18์ž๋ฆฌ) = 10byte
์˜ค๋ธŒ์ ํŠธ
๋ฒˆํ˜ธ
์ƒ๋Œ€ ํŒŒ์ผ
๋ฒˆํ˜ธ
๋ธ”๋ก ๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ ๋ฒˆํ˜ธ
32bit(16์ž๋ฆฌ) 10bit(3์ž๋ฆฌ) 22bit(6์ž๋ฆฌ) 16bit(3์ž๋ฆฌ)
ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์†ํ•˜๋Š” 
์˜ค๋ธŒ์ ํŠธ ๋ฒˆํ˜ธ
๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ
๋ฐ์ดํ„ฐํŒŒ์ผ์˜ ๋ฒˆํ˜ธ
๋ฐ์ดํ„ฐํŒŒ์ผ ์•ˆ์˜
์–ด๋Š ๋ธ”๋ก์ธ์ง€ ์˜๋ฏธ
๋ธ”๋ก์—์„œ
๋ฐ์ดํ„ฐ์˜ ์œ„์น˜

AAAStG AAB AAAbmR AAA
์˜ค๋ธŒ์ ํŠธ๋ฒˆํ˜ธ.
์ด ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜
RowId๋Š” AAAStG๋กœ ์‹œ์ž‘.
์ƒ๋Œ€ํŒŒ์ผ๋ฒˆํ˜ธ.
๊ฐ™์€ ํ…Œ์ด๋ธ”์ด๋ผ๋„
ํ–‰๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ.
๋ธ”๋ก๋ฒˆํ˜ธ.
์กฐํšŒํ•  ๋ฐ์ดํ„ฐ๊ฐ€
๊ฐ™์€ ๋ธ”๋ก์— ์žˆ์œผ๋ฉด

์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋จ.
๋ฐ์ดํ„ฐ ๋ฒˆํ˜ธ.
๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์ˆœ์„œ๋ฅผ
์˜๋ฏธํ•จ
.

 

 

 

INDEX์˜ ํšจ์œจ์ ์ธ ์‚ฌ์šฉ
ํšจ์œจ์ ์ธ ์‚ฌ์šฉ = INDEX๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ
์‚ฌ์šฉ๋˜์ง€์•Š๋Š” ๊ฒฝ์šฐ๋ฅผ ํ”ผํ•˜๊ธฐ
  • INDEXED์นผ๋Ÿผ(์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ ์นผ๋Ÿผ)์ด ๋น„๊ต๋˜๊ธฐ ์ „์— ๋ณ€ํ˜•์ด ์ผ์–ด๋‚œ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์•ˆ๋จ

 

  • ์กฐ๊ฑด์ด ๋ถ€์ •์œผ๋กœ ๊ธฐ์ˆ ๋œ ๊ฒฝ์šฐ(NOT, <>)  ์ธ๋ฑ์Šค ์‚ฌ์šฉ์•ˆ๋จ

  • ์ผ๋ฐ˜์ ์œผ๋กœ WHERE ์ ˆ์—์„œ ๋ถ€์ • ์—ฐ์‚ฐ์ž(์˜ˆ: NOT, <>)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์นผ๋Ÿผ์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ „์ฒด ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•˜๊ฒŒ๋จ.
  • ์กฐ๊ฑด๋ฌธ์—์„œ ๋ฐ”๊นฅํ…Œ์ด๋ธ”(e1)์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ : ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฐ”๊นฅ ์ฟผ๋ฆฌ๋ถ„์˜ ๊ฐ ํ–‰์— ๋Œ€ํ•ด ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ
  • INDEXED์นผ๋Ÿผ์ด NULL๋กœ ๋น„๊ตํ•  ๊ฒฝ์šฐ (์ปฌ๋Ÿผ ๊ฐ’์ด NULL์ธ ํ–‰์€ INDEX์— ์ €์žฅ์•ˆ๋จ)
  • Optimizer์˜ ์ทจ์‚ฌ์„ ํƒ
    • Optimizer๋Š” ํ•ด๋‹น ์ฟผ๋ฆฌ์— ๊ฐ€์žฅ ์ตœ์ ์ธ ์‹คํ–‰ ๊ณ„ํš์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์ฟผ๋ฆฌ์˜ ๋ณต์žก์„ฑ, ์กฐ๊ฑด์ ˆ, ์ธ๋ฑ์Šค ์„ ํƒ๋„ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•จ. ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๋”๋ผ๋„ ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ.

 

 

์ž๋™ ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ TRIGGER
  • ์ž„์˜์˜ ํ…Œ์ด๋ธ”์— ํŠน์ •ํ•œ DML๋ฌธ์ด ์ˆ˜ํ–‰๋์„ ๋•Œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž๋™์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ.
  • ์–ด๋–ค ์ž‘์—…์ด ์‹คํ–‰๋˜๋ฉด ์—ฐ์‡„์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋„๋ก ํ•œ ๊ฒƒ.
ํƒ€์ด๋ฐ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ -DML ์ด์ „์— ์ˆ˜ํ–‰
-DML ์ดํ›„์— ์ˆ˜ํ–‰
์ˆ˜ํ–‰ ์ฐจ์ˆ˜์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ -ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰
-row๋งˆ๋‹ค ์ˆ˜ํ–‰