[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] Index

๐Ÿงช Computer Science/Database

Index๋ž€?

  • ์ธ๋ฑ์Šค(index)์˜ ์›๋ž˜ ๋œป์€ ์ƒ‰์ธ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์กฐํšŒ ๋ฐ ๊ฒ€์ƒ‰์„ ๋” ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•/๊ธฐ์ˆ , ํ˜น์€ ์ด์— ์“ฐ์ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  • ์‚ฌ์šฉ ์ด์œ 
    • select๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ, ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ๋‹ค๋ฉด ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ˆœํšŒ์— ๋งŽ์€ ์ž์›๊ณผ ์‹œ๊ฐ„์ด ์†Œ๋ชจ๋  ๊ฒƒ์ด๋‹ค. ์ด ๋•Œ ๋„์›€์ด ๋˜๋Š”๊ฒŒ ์ธ๋ฑ์Šค์ด๋‹ค.
    • ์ž์ฃผ ์กฐํšŒ๋˜๋Š” Column์— ๋Œ€ํ•œ Index Table์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด SELECT ๋ฌธ์ด ๋“ค์–ด์™”์„ ๋•Œ Index ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๊ฐ’๋“ค๋กœ ๊ฒฐ๊ณผ ๊ฐ’์„ ์กฐํšŒํ•ด ์˜จ๋‹ค. ๊ทธ๋ž˜์„œ Index๋ฅผ ์ž˜ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด '๊ฒ€์ƒ‰'์—ฐ์‚ฐ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

  • ๋™์ž‘
    • Index Table์—์„œ where์— ํฌํ•จ๋œ ๊ฐ’์„ ๊ฒ€์ƒ‰
    • ํ•ด๋‹น ๊ฐ’์˜ table_id PK๋ฅผ ํš๋“
    • ๊ฐ€์ ธ์˜จ table_id PK ๊ฐ’์œผ๋กœ ์›๋ณธ ํ…Œ์ด๋ธ”์—์„œ ๊ฐ’์„ ์กฐํšŒ

Index ์ž๋ฃŒ๊ตฌ์กฐ

  • B+-Tree ์ธ๋ฑ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธ๋ฑ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ B+-Tree ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. B+-Tree ์ธ๋ฑ์Šค๋Š” ์นผ๋Ÿผ์˜ ๊ฐ’์„ ๋ณ€ํ˜•ํ•˜์ง€ ์•Š๊ณ  ์›๋ž˜์˜ ๊ฐ’์„ ์ด์šฉํ•ด ์ธ๋ฑ์‹ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
  • Hash ์ธ๋ฑ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์นผ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์„œ ์ธ๋ฑ์‹ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋งค์šฐ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ’์„ ๋ณ€ํ˜•ํ•ด์„œ ์ธ๋ฑ์‹ฑํ•˜๋ฏ€๋กœ, ํŠน์ • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ์ „๋ฐฉ ์ผ์น˜์™€ ๊ฐ™์ด ๊ฐ’์˜ ์ผ๋ถ€๋งŒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ์™œ index ์ƒ์„ฑ ์‹œ b-tree๋ฅผ ์‚ฌ์šฉํ• ๊นŒ? hash table(O(1))์ด ๋” ํšจ์œจ์ ์ด์ง€ ์•Š์„๊นŒ?
    • SELECT ์งˆ์˜ ์กฐ๊ฑด์—๋Š” ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ(<>)๋„ ํฌํ•จ
    • hash table์€ ๋™๋“ฑ ์—ฐ์‚ฐ์— ํŠนํ™”๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ ์‚ฌ์šฉ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ

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

์ฃผ์˜ํ•  ์ 

  • ์ธ๋ฑ์Šค๋Š” ๋”ฐ๋กœ ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋œ๋‹ค. ์ž์›์„ ์†Œ๋ชจํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋•Œ๋ฌธ์— ๋ฌด๋ถ„๋ณ„ํ•œ ์ธ๋ฑ์Šค์˜ ์‚ฌ์šฉ์€ ์„ฑ๋Šฅ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.
  • ๋˜ํ•œ ์ธ๋ฑ์Šค๋Š” ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๊ฒ€์ƒ‰๊ณผ ์กฐํšŒ์˜ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์žฆ์€ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ(์‚ฝ์ž…, ์ˆ˜์ •, ์‚ญ์ œ)๊ฐ€ ๋œ๋‹ค๋ฉด ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์˜ ๋ณ€๊ฒฝ๊ณผ ์ •๋ ฌ์— ๋“œ๋Š” ์˜ค๋ฒ„ํ—ค๋“œ ๋•Œ๋ฌธ์— ์˜คํžˆ๋ ค ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
    • INSERT: ํ…Œ์ด๋ธ”์—๋Š” ์ž…๋ ฅ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜์ง€๋งŒ, ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์—๋Š” ์ •๋ ฌํ•˜์—ฌ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ
    • DELETE: ํ…Œ์ด๋ธ”์—์„œ๋งŒ ์‚ญ์ œ๋˜๊ณ  ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์—๋Š” ๋‚จ์•„ ์žˆ์–ด ์ฟผ๋ฆฌ ์ˆ˜ํ–‰ ์†๋„ ์ €ํ•˜
    • UPDATE: ์ธ๋ฑ์Šค์—๋Š” UPDATE๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— DELETE, INSERT ๋‘ ์ž‘์—… ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ถ€ํ•˜ ๋ฐœ์ƒ
  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ๋†’์€ ์ปฌ๋Ÿผ(์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋‚ฎ์€ ์ปฌ๋Ÿผ)์€ ์ธ๋ฑ์Šค๋กœ ๋งŒ๋“ค์–ด๋„ ๋ฌด์šฉ์ง€๋ฌผ(์˜ˆ: ์„ฑ๋ณ„)
  • ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์ธ๋ฑ์‹ฑํ•  ๋•Œ ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ์ปฌ๋Ÿผ -> ๋‚ฎ์€ ์ปฌ๋Ÿผ ์ˆœ์œผ๋กœ ์ธ๋ฑ์‹ฑํ•ด์•ผ ํšจ์œจ์ 