Skip to content

Latest commit

Β 

History

History
18 lines (15 loc) Β· 1.53 KB

index.md

File metadata and controls

18 lines (15 loc) Β· 1.53 KB

λ°μ΄ν„°λ² μ΄μŠ€ 인덱슀의 λ™μž‘ 원리와 μž₯단점

λ™μž‘μ›λ¦¬

  • B-Tree ꡬ쑰λ₯Ό 기반으둜 κ΅¬ν˜„λ˜μ–΄ μžˆμ–΄ O(log n)의 μ‹œκ°„ λ³΅μž‘λ„λ‘œ 데이터 검색이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • μΈλ±μŠ€λŠ” μ‹€μ œ λ°μ΄ν„°μ˜ μ •λ ¬λœ 볡사본을 λ³„λ„λ‘œ μ €μž₯ν•˜κ³ , μ‹€μ œ λ°μ΄ν„°μ˜ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό ν•¨κ»˜ λ³΄κ΄€ν•©λ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, μ‚¬μš©μž ν…Œμ΄λΈ”μ—μ„œ μ΄λ©”μΌλ‘œ 검색할 λ•Œ, 이메일 μ»¬λŸΌμ— μΈλ±μŠ€κ°€ μžˆλ‹€λ©΄ 전체 ν…Œμ΄λΈ”μ„ μŠ€μΊ”ν•˜μ§€ μ•Šκ³  인덱슀λ₯Ό 톡해 λΉ λ₯΄κ²Œ 데이터λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

μž₯점

  • μ†ŒλŸ‰μ˜ 데이터 검색 μ‹œ(일반적으둜 전체 λ°μ΄ν„°μ˜ 5% ~ 20% 미만) 맀우 λΉ λ₯Έ 검색 속도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • WHERE 절의 쑰건, ORDER BY, JOIN μ—°μ‚° μ‹œ μ„±λŠ₯이 ν–₯μƒλ©λ‹ˆλ‹€.
  • ν…Œμ΄λΈ” 전체λ₯Ό μŠ€μΊ”ν•˜μ§€ μ•Šμ•„λ„ λ˜λ―€λ‘œ λ””μŠ€ν¬ I/Oκ°€ κ°μ†Œν•©λ‹ˆλ‹€.

단점

  • INSERT, UPDATE, DELETE μ‹œ μΈλ±μŠ€λ„ ν•¨κ»˜ μˆ˜μ •ν•΄μ•Ό ν•˜λ―€λ‘œ μ“°κΈ° μž‘μ—…μ˜ μ„±λŠ₯이 μ €ν•˜λ©λ‹ˆλ‹€.
  • κ°€μž₯ μ€‘μš”ν•œ μ œν•œμ‚¬ν•­μœΌλ‘œ, 전체 λ°μ΄ν„°μ˜ 5~20% 이상을 μ‘°νšŒν•˜λŠ” 경우 였히렀 μ„±λŠ₯이 μ €ν•˜λ  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ‹€μŒκ³Ό 같은 이유 λ•Œλ¬Έμž…λ‹ˆλ‹€:
    • Index Range Scan은 Random Access λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.
    • 즉, λ””μŠ€ν¬μ˜ μ—¬λŸ¬ μœ„μΉ˜λ₯Ό κ±΄λ„ˆλ›°λ©΄μ„œ 데이터λ₯Ό 읽어야 ν•˜λ―€λ‘œ λ§Žμ€ I/Oκ°€ λ°œμƒν•©λ‹ˆλ‹€.
    • 반면 Full Table Scan은 Sequential Access둜 λ””μŠ€ν¬λ₯Ό 순차적으둜 읽기 λ•Œλ¬Έμ—, λŒ€λŸ‰μ˜ 데이터λ₯Ό 읽을 λ•Œ 더 효율적일 수 μžˆμŠ΅λ‹ˆλ‹€.