Index

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋ž€ RDBMS์—์„œ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ, ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ full scanํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ์ปฌ๋Ÿผ์˜ ํ…Œ์ด๋ธ”(์ปฌ๋Ÿผ, ์ธ๋ฑ์Šค)๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•ด๋†“๊ณ  ๊ทธ๊ฒƒ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๊ฒ€์ƒ‰ ํšจ์œจ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Full Table Scan

  • Row ๊ฐ’์„ ์ˆœ์ฐจ์ ์œผ๋กœ scanํ•˜์—ฌ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

  • ๊ฐ€์žฅ ๋Š๋ฆฐ scanning ๋ฐฉ๋ฒ•์ด๋ฉฐ, ์ž์›์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰, ์†๋„๋„ ๋Š๋ฆฌ๊ณ  ์ž์›์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์ข‹์ง€์•Š์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

  • ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DB์—์„œ Index ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

Database Index

์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. Index๋Š” ๊ด€๋ จ๋œ Table๊ณผ ๋ณ„๋„๋กœ ์ €์žฅ๋˜๋ฉฐ, Index๋กœ ์„ค์ •ํ•œ ์ปฌ๋Ÿผ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€๋˜๋ฉด, Index๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋™์‹œ์— ๋œ๋‹ค.

  • RDBMS์—์„œ ์‚ฌ์šฉํ•˜๋Š” Index๋Š” Balance Search Tree๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (B-Tree ํ˜น์€ B+ Tree๋ฅผ ์‚ฌ์šฉ)

ํŠน์ง•

  • ํ‚ค ๊ฐ’์„ ๊ธฐ์ดˆ๋กœ ํ•ด ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

  • ์งˆ์˜๋‚˜ ๋ณด๊ณ ์„œ์—์„œ ๊ทธ๋ฃนํ™” ์ž‘์—…์˜ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

  • ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค(PK)๋Š” ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค๋œ๋‹ค.

  • ํ•„๋“œ ์ค‘์—์„œ ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค ๋  ์ˆ˜ ์—†๋Š” ํ•„๋“œ๋„ ์žˆ๋‹ค.

  • ๋‹ค์ค‘ ํ•„๋“œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์ฒซ ํ•„๋“œ ๊ฐ’์ด ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๋„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜ํ•  ์ 

  • ์ธ๋ฑ์Šค ๋œ ํ•„๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•  ๋•Œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

  • ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•ด ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์ด ํ•„์š”ํ•ด์ง„๋‹ค.

  • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ž์ฃผ ์ผ์–ด๋‚  ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ์žฌ์ž‘์„ฑํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์žˆ๋‹ค.

๋ชฉ์ 

SELECT ์ฟผ๋ฆฌ์˜ WHERE์ ˆ์ด๋‚˜ JOIN ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„๋•Œ๋งŒ ์ธ๋ฑ์Šค๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ SELECT ์ฟผ๋ฆฌ์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š”๋ฐ ๋ชฉ์ ์ด ์žˆ๋‹ค.

์–ธ์ œ ์ƒ์„ฑํ•ด์•ผํ• ๊นŒ?

  • WHERE์ ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์„ ์ธ๋ฑ์Šค๋กœ ๋งŒ๋“ ๋‹ค.

  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต๋„๊ฐ€ ๋†’์€ ์—ด์€ ์ธ๋ฑ์Šค๋กœ ๋งŒ๋“ค์–ด๋„ ํšจ์šฉ์ด ์—†๋‹ค.(๋™์ผ ๊ฐ’์ด ์ ์€ ์ปฌ๋Ÿผ 1~15%์ดํ•˜, 5%์ดํ•˜)

  • ์™ธ๋ž˜ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์—ด์—๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋˜๋„๋ก ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • JOIN์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์—ด์—๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • INSERT/UPDATE/DELETE๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ์ผ์–ด๋‚˜๋Š”์ง€ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.

์ข…๋ฅ˜

  • Unique Index : PK๋‚˜ Unique ์ œ์•ฝ์กฐ๊ฑด์„ ์ •์˜ํ•  ๊ฒฝ์šฐ์—๋Š” Unique Index๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

  • Non UNIQUE INDEX : ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š” ๊ฒฝ์šฐ

  • Function Based INDEX ( FBI - ํ•จ์ˆ˜๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค )

  • DESCENDING INDEX : ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํฐ ๊ฐ’์„ ๋งŽ์ด ์กฐํšŒํ•˜๋Š” SQL์— ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

    • ๊ณ„์ขŒ ๋‚ด์—ญ ์ตœ๊ทผ ๋‚ ์งœ๋ถ€ํ„ฐ ์กฐํšŒ, ํšŒ์‚ฌ ๋งค์ถœ

  • ๊ฒฐํ•ฉ์ธ๋ฑ์Šค(Composite Index) : ์ธ๋ฑ์Šค ์ƒ์„ฑ์‹œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ํ•ฉ์ณ์„œ ์ธ๋ฑ์Šค ์ƒ์„ฑ

    • ์ฃผ๋กœ where ์กฐ๊ฑด ์ปฌ๋Ÿผ์ด 2๊ฐœ ์ด์ƒ์ด and๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์— ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ( ์ž˜๋ชป ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ์— ๋‚˜์œ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. )

์ฐธ๊ณ 

Last updated