Notice
Recent Posts
Recent Comments
Link
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

BUILD_SSO

[Database/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์ธ๋ฑ์Šค Index ๋ณธ๋ฌธ

Tech Interview

[Database/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์ธ๋ฑ์Šค Index

sohyeonnn 2023. 5. 3. 16:18

๐Ÿ‘‰๐Ÿป์ธ๋ฑ์Šค Index์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

  • ์ธ๋ฑ์Šค๋ž€ ํ…Œ์ด๋ธ”์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ธ FTS(Full Table Scan)๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•ด๋‹น ์ž๋ฃŒ๋ฅผ ํ…Œ์ด๋ธ”์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, DB๋ฅผ ์ฑ…์œผ๋กœ ๋น„์œ ํ•œ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋Š” ์ฑ…์˜ ๋‚ด์šฉ์ด ๋˜๊ณ , ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ ˆ์ฝ”๋“œ์˜ ์ฃผ์†Œ๋Š” ์ธ๋ฑ์Šค ๋ชฉ๋ก์— ์žˆ๋Š” ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์žฅ์ 

  • ์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (์›ํ•˜๋Š” ๊ฐ’์„) ๊ฒ€์ƒ‰์— ๋น ๋ฅด๋‹ค.
  • ๋•Œ๋ฌธ์—, ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ORDER BY์— ์˜ํ•œ ์ •๋ ฌ(Sort) ๊ณผ์ •์„ ํ”ผํ•  ์ˆ˜๊ฐ€ ์žˆ๊ณ , MIN, MAX๊ฐ’์˜ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹จ์ 

  • ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€, ์ˆ˜์ • ์‚ญ์ œ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.
  • ์ฆ‰, ์ธ๋ฑ์Šค๋Š” DML์— ์•ฝํ•˜๋‹ค.
    INSERT, UPDATE, DELETE๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ฐ’์ด ๋ฐ”๋€๋‹ค๋ฉด ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ” ๋‚ด์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋‹ค์‹œ ์ •๋ ฌ์„ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ„์— ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”, ์›๋ณธ ํ…Œ์ด๋ธ” ์ด๋ ‡๊ฒŒ ๋‘ ๊ตฐ๋ฐ์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ๋„ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— DML์ด ๋นˆ๋ฒˆํ•œ ํ…Œ์ด๋ธ”๋ณด๋‹ค ๊ฒ€์ƒ‰์„ ์œ„์ฃผ๋กœ ํ•˜๋Š” ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์ฆ‰, ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜๊ณ  ๊ทธ๋Œ€์‹  ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ธ ๊ธฐ๋Šฅ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰๐ŸปDBMS๋Š” Index๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‚˜์š”?(Index ์ž๋ฃŒ๊ตฌ์กฐ)

B-Tree

  • ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ B-Tree๋ฅผ ๊ฐœ์„ ์‹œํ‚จ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ,
  • BTree ๋ฆฌํ”„๋…ธ๋“œ๋“ค์„ LinkedList๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ˆœ์ฐจ ๊ฒ€์ƒ‰์„ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”๋ณด๋‹ค ๋‚˜์œ O(log2N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

ํ•ด์‹œํ…Œ์ด๋ธ”     

  • ์ปฌ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋œ ํ•ด์‹œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.
  • ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ด๋ผ ๊ฒ€์ƒ‰์ด ๋งค์šฐ ๋น ๋ฅด๋‹ค.

๐Ÿ‘‰๐Ÿป์™œ index ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ b-tree ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

  • ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ ๋ถ€๋“ฑํ˜ธ(<,>)์™€ ๊ฐ™์€ ์—ฐ์†์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์ˆœ์ฐจ ๊ฒ€์ƒ‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์— ์ ํ•ฉํ•˜์ง€ ์•Š์•„ B-Tree๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ‘‰๐Ÿป๊ธฐ๋ณธ ์ธ๋ฑ์Šค์™€ ๋ณด์กฐ ์ธ๋ฑ์Šค(Primary Index vs Secondary Index)

๊ธฐ๋ณธ ์ธ๋ฑ์Šค

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

๋ณด์กฐ ์ธ๋ฑ์Šค

  • ๋ณด์กฐ ์ธ๋ฑ์Šค๋Š” ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์ธ๋ฑ์‹ฑ์„ ๋„์ž…ํ•˜์—ฌ ๋งคํ•‘ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ธ๋ฑ์Šค์ด๋‹ค.
  • ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์—ด์˜ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ค€์˜ ๋งคํ•‘ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์ง„๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ธ๋ฑ์Šค ๋ฐฉ๋ฒ•์€ ๊ฐ ๋ฒ”์œ„๋ฅผ ๋” ์ž‘์€ ๋ฒ”์œ„๋กœ ์ค„์ธ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ฃผ์†Œ๋ฅผ ๋” ๋นจ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ค€ ๋งคํ•‘์„ ์ €์žฅํ•œ๋‹ค. ๋˜ํ•œ ๋ณด์กฐ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‘ ๋ฒˆ์งธ ์ˆ˜์ค€์˜ ๋งคํ•‘๊ณผ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

์ฆ‰, ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๋Š” ํ•„๋“œ์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ํฌํ•จํ•˜๊ณ  ์ค‘๋ณต ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ํ•„๋“œ ์ง‘ํ•ฉ์˜ ์ธ๋ฑ์Šค์ธ ๋ฐ˜๋ฉด,
๋ณด์กฐ ์ธ๋ฑ์Šค๋Š” ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ ์ธ๋ฑ์Šค์ด๋ฉฐ ์ค‘๋ณต์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰๐Ÿป๊ฒฐํ•ฉ ์ธ๋ฑ์Šค(Composite Index)

  • ๊ฒฐํ•ฉ ์ธ๋ฑ์Šค๋ž€ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ํ•ฉ์ณ์„œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๐Ÿ‘‰๐ŸปIndex ์˜ ์„ฑ๋Šฅ๊ณผ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ€์žฅ ๋นจ๋ฆฌ ์ƒ๊ฐํ•˜๋Š” ํ•ด๊ฒฐ์ฑ…์ด ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ์ƒ์„ฑ์ด๋‹ค.
    ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ์ธ๋ฑ์Šค๊ฐ€ ์Œ“์—ฌ๊ฐ€๋Š” ๊ฒƒ์€ ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋ฌธ์„ ๋น ๋ฅด๊ฒŒ๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ,
    ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ ๋ถ€ํ•˜๋ฅผ ์ดˆ๋ž˜ํ•œ๋‹ค.
  • ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ ค ๋งŒ๋“  ๊ฐ์ฒด์ธ๋ฐ ๋งŽ์€ ์ธ๋ฑ์Šค๊ฐ€ ์Œ“์—ฌ์„œ INSERT, UPDATE, DELETE ์‹œ์—
    ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ด ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ์ €ํ•˜ํ•œ๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ์— ์ธ๋ฑ์Šค๋ฅผ ๋งˆ๊ตฌ์žก์ด๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” SQL๋ฌธ์„ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์งœ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜๊ฐ€์•ผ ํ•œ๋‹ค.
Comments