๐Ÿ’ญ๊ฐœ๋ฐœ์ž์ผ๊ธฐ

๋‹จ๋… ์ธ๋ฑ์Šค ํ•„์š”ํ•  ๊ฑฐ ๊ฐ™๋‹ค๊ณ  ๋ฏธ๋ฆฌ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์„ธ์š” (๊ฒฝํ—˜๋‹ด)

dev_seong 2026. 1. 9. 11:22

1. ๋ฌธ์ œ ์ƒํ™ฉ

Oracle Database ํ™˜๊ฒฝ์—์„œ ์šด์˜ ์ค‘์ธ ์„œ๋น„์Šค์—์„œ ์œ ํšจ๊ธฐ๊ฐ„ ๋งŒ๋ฃŒ์ผ ์ปฌ๋Ÿผ์— ๋‹จ๋… ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ ์ดํ›„, ๊ธฐ์กด์—๋Š” ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•˜๋˜ SELECT ์ฟผ๋ฆฌ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๊ทน๋‹จ์ ์œผ๋กœ ๋А๋ ค์ง€๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

๋‹น์‹œ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์™€ ์ฟผ๋ฆฌ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

  • ํ…Œ์ด๋ธ”์—๋Š” PK ์ธ๋ฑ์Šค์™€ ๋ณตํ•ฉ์ธ๋ฑ์Šค ์กด์žฌ
  • ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ์ธ๋ฑ์Šค: ์œ ํšจ๊ธฐ๊ฐ„ ๋งŒ๋ฃŒ์ผ ๋‹จ๋… ์ธ๋ฑ์Šค
  • PK + ์œ ํšจ๊ธฐ๊ฐ„ ๋งŒ๋ฃŒ์ผ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์—†์Œ

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์ ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 
WHERE PK_COL = :pk AND EXPIRE_DATE >= SYSDATE

๊ธฐ์กด์—๋Š” PK ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด 1๊ฑด ์กฐํšŒ๋กœ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋˜ ์ฟผ๋ฆฌ์˜€๋‹ค.


2. ์ด์ƒ ์ง•ํ›„

๋‹จ๋… ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ์ดํ›„ ๋™์ผํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์ˆ˜ ์ดˆ์—์„œ ์ˆ˜๋ฐฑ ์ดˆ๊นŒ์ง€ ์ง€์—ฐ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

์‹คํ–‰๊ณ„ํš์„ ํ™•์ธํ•ด๋ณด๋‹ˆ, ๊ธฐ์กด์— ์‚ฌ์šฉ๋˜๋˜ PK ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ ์œ ํšจ๊ธฐ๊ฐ„ ๋งŒ๋ฃŒ์ผ ๋‹จ๋… ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋Œ€๋Ÿ‰์˜ ์ธ๋ฑ์Šค ์Šค์บ”๊ณผ ํ…Œ์ด๋ธ” ์ ‘๊ทผ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.


3. ์›์ธ ๋ถ„์„

์ž์„ธํ•œ ์„ ํƒ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„  ์•„์ง ํŒŒ์•…๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ ์›์ธ์€ ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ์ธ๋ฑ์Šค ์„ ํƒ์— ์žˆ์—ˆ๋‹ค.

EXPIRE_DATE >= SYSDATE

์ด ์กฐ๊ฑด์€ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๋กœ์šฐ๋ฅผ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์˜ตํ‹ฐ๋งˆ์ด์ €๋Š” ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ–ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ PK ์กฐ๊ฑด์€ ์ธ๋ฑ์Šค ์ ‘๊ทผ ๋‹จ๊ณ„์—์„œ ํ™œ์šฉ๋˜์ง€ ๋ชปํ•˜๊ณ , ํ•„ํ„ฐ ์กฐ๊ฑด์œผ๋กœ ๋’ค๋Šฆ๊ฒŒ ์ ์šฉ๋˜์—ˆ๋‹ค.

์‚ฌ๋žŒ์˜ ๊ด€์ ์—์„œ๋Š” PK ์กฐ๊ฑด์ด ๊ฐ€์žฅ ์„ ํƒ๋„๊ฐ€ ๋†’์•„ ๋จผ์ € ์ ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ๋น„์šฉ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋‹ค.


4. ๋ณตํ•ฉ ์ธ๋ฑ์Šค ๋ถ€์žฌ์˜ ์˜ํ–ฅ

ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

  • PK ์ธ๋ฑ์Šค: (PK_COL)
  • ๋‹จ๋… ์ธ๋ฑ์Šค: (EXPIRE_DATE)

ํ•˜์ง€๋งŒ ์‹ค์ œ ์ฟผ๋ฆฌ๋Š” ๋‘ ์ปฌ๋Ÿผ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

 
WHERE PK_COL = ? AND EXPIRE_DATE >= SYSDATE

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


5. ์ฆ‰๊ฐ์ ์ธ ๋Œ€์‘: ํžŒํŠธ ์ ์šฉ

์šด์˜ ์ค‘์ธ ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ์—์„œ๋Š” ์ธ๋ฑ์Šค ์ถ”๊ฐ€๋‚˜ ์ œ๊ฑฐ๊ฐ€ ๊ณง๋ฐ”๋กœ ๊ฐ€๋Šฅํ•œ ์„ ํƒ์ง€๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค. ์ธ๋ฑ์Šค ๋ณ€๊ฒฝ์€ ์„œ๋น„์Šค ์˜ํ–ฅ๋„๊ฐ€ ํฌ๊ณ  ์ž‘์—… ๋ฒ”์œ„๋„ ๋„“๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์šฐ์„ ์ ์ธ ๋Œ€์‘์œผ๋กœ PK ์ธ๋ฑ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ํžŒํŠธ๋ฅผ ์ ์šฉํ–ˆ๋‹ค.

 
SELECT /*+ INDEX(TABLE_NAME PK_INDEX_NAME) */ ... FROM TABLE_NAME WHERE PK_COL = :pk AND EXPIRE_DATE >= SYSDATE;

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


6. ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ ๋ฐฉํ–ฅ

์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐœ์„ ์ด ํ•„์š”ํ•˜๋‹ค.

์ฒซ์งธ, ์‹ค์ œ ์ฟผ๋ฆฌ ํŒจํ„ด์— ๋งž๋Š” ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 
CREATE INDEX IDX_PK_EXPIRE ON TABLE_NAME (PK_COL, EXPIRE_DATE);

์ด๋ฅผ ํ†ตํ•ด ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ์„ ํƒ ์—ฌ์ง€๋ฅผ ์ค„์ด๊ณ , ์•ˆ์ •์ ์ธ ์‹คํ–‰๊ณ„ํš์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‘˜์งธ, ํ†ต๊ณ„ ์ •๋ณด ๊ด€๋ฆฌ์™€ ์ฟผ๋ฆฌ ๊ตฌ์กฐ ๊ฐœ์„ ์ด๋‹ค. ์กฐ๊ฑด์ ˆ ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ , ํ•„์š”ํ•˜๋‹ค๋ฉด ํ†ต๊ณ„ ์žฌ์ˆ˜์ง‘์ด๋‚˜ ํžˆ์Šคํ† ๊ทธ๋žจ ์กฐ์ •์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ Oracle 11g ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฐฉ์‹๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค.


7. ์ •๋ฆฌํ•˜๋ฉฐ ์–ป์€ ๊ตํ›ˆ

  • ์ธ๋ฑ์Šค๋Š” ๋งŽ์„์ˆ˜๋ก ์ข‹์€ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค
  • ๋‹จ๋… ์ธ๋ฑ์Šค ํ•˜๋‚˜๊ฐ€ ๊ธฐ์กด ์ฟผ๋ฆฌ์˜ ์‹คํ–‰๊ณ„ํš์„ ๋ง๊ฐ€๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค
  • ์˜ตํ‹ฐ๋งˆ์ด์ €์˜ ํŒ๋‹จ์€ ๊ฐœ๋ฐœ์ž์˜ ์˜๋„์™€ ํ•ญ์ƒ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค
  • ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ตฌ์กฐ์  ์ตœ์ ํ•ด๋ณด๋‹ค ์•ˆ์ •์ ์ธ ์ž„์‹œ ์กฐ์น˜๊ฐ€ ๋” ์ค‘์š”ํ•  ๋•Œ๋„ ์žˆ๋‹ค

8. ๋งˆ๋ฌด๋ฆฌ

๋ฐ์ดํ„ฐ๊ฐ€ ์›Œ๋‚™ ๋งŽ์€ ํ™˜๊ฒฝ์ด์—ฌ์„œ ํ…Œ์ด๋ธ” ์ธ๋ฑ์Šค ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ •๊ธฐ์ ๊ฒ€ ๊ฑธ๊ณ  ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”ํ›„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ๋Š” ์ƒ๊ฐ ํ•˜๋‚˜๋งŒ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ๋˜ ๋‹จ๋…์ธ๋ฑ์Šค์˜€์ง€๋งŒ ์ด๋กœ ์ธํ•ด ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•ด ๋ฒ„๋ ธ๋‹ค.

๋น„๋ก ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒŒ ์•„๋‹Œ ํŠน์ • ์กฐ๊ฑด์— ๋งž์•˜์„ ๋•Œ๋งŒ ๋“ค์–ด์˜ค๋Š” ๋ถ€๋ถ„์ด๋ผ ์‹ค์ œ๋กœ cs๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ผฌ์ด๋Š” ์ด์Šˆ๋Š” ์—†์—ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋˜ ๋ถ€๋ถ„์ด๋‹ˆ ํฌ๊ฒŒ ๋ฐ˜์„ฑ์ค‘์ด๋‹ค.

์ธ๋ฑ์Šค ์ถ”๊ฐ€ ์—ญ์‹œ ํ•˜๋‚˜์˜ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์ด๋ฉฐ, ์„œ๋น„์Šค ์ „๋ฐ˜์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ฒด๊ฐํ–ˆ๋‹ค.

ํŠนํžˆ Oracle 11g์™€ ๊ฐ™์€ ๋ ˆ๊ฑฐ์‹œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ๊ธฐ์กด ์ฟผ๋ฆฌ๋“ค์˜ ์‹คํ–‰๊ณ„ํš์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐ˜๋“œ์‹œ ๊ฒ€ํ† ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.