🐢 ν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€μ™€ λ…Όν΄λŸ¬μŠ€ν„°λ“œ 인덱슀

μœ μ‚¬κ°œλ°œμžΒ·2024λ…„ 4μ›” 21일
0

이둠곡뢀

λͺ©λ‘ 보기
4/10

πŸ“Œ κ°œμš”

μΈλ±μŠ€λŠ” 데이터λ₯Ό λΉ λ₯΄κ²Œ 감색할 수 μžˆλŠ” λ„μ™€μ£ΌλŠ” 객체이닀. μ»¬λŸΌμ„ μ •λ ¬ν•œ ν›„ 데이터λ₯Ό λΉ λ₯΄κ²Œ 찾을 수 μžˆλ„λ‘ ν•΄μ€€λ‹€. μ±…μœΌλ‘œ 치자면 μΌμ’…μ˜ 색인 역할을 μ˜λ―Έν•œλ‹€. 이 μΈλ±μŠ€λŠ” 두가지 μ’…λ₯˜λ‘œ λ‚˜λ‰˜λŠ”λ° 상황에 맞게 μ μ ˆν•œ 컬럼으둜 μ μš©ν•˜λŠ”κ²Œ μ€‘μš”ν•˜λ‹€.

πŸ“– ν΄λŸ¬μŠ€ν„°λ“œ 인덱슀

  • ν…Œμ΄λΈ”λ‹Ή 1κ°œμ”©λ§Œ ν—ˆμš©λœλ‹€.
  • 물리적으둜 행을 μž¬λ°°μ—΄ν•œλ‹€.
  • PK μ„€μ • μ‹œ κ·Έ μ»¬λŸΌμ€ μžλ™μœΌλ‘œ ν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€κ°€ λ§Œλ“€μ–΄μ§„λ‹€.
  • 인덱슀 자체의 리프 νŽ˜μ΄μ§€κ°€ 곧 데이터이닀. 즉 ν…Œμ΄λΈ” μžμ²΄κ°€ μΈλ±μŠ€μ΄λ‹€. (λ”°λ‘œ 인덱슀 νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€.)
  • 데이터 μž…λ ₯, μˆ˜μ •, μ‚­μ œ μ‹œ 항상 인덱슀 μˆœμ„œμ— 따라 μ €μž₯λœλ‹€. 즉, 데이터 μžμ²΄κ°€ 인덱슀의 일뢀가 λ˜μ–΄ μΈλ±μŠ€λ‘œμ„œ κΈ°λŠ₯ν•œλ‹€.
  • λ…Όν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€λ³΄λ‹€ κ²€μƒ‰μ†λ„λŠ” 더 λΉ λ₯΄λ‹€. ν•˜μ§€λ§Œ λ°μ΄ν„°μ˜ μž…λ ₯, μˆ˜μ •, μ‚­μ œλŠ” λŠλ¦¬λ‹€.


ν΄λŸ¬μŠ€ν„°λ“œ 인덱슀λ₯Ό κ΅¬μ„±ν•˜λ €λ©΄ ν–‰ 데이터λ₯Ό ν•΄λ‹Ή μ—΄λ‘œ μ •λ ¬ν•œ 후에 루트 νŽ˜μ΄μ§€λ₯Ό λ§Œλ“€κ²Œ λœλ‹€.
즉 데이터 νŽ˜μ΄μ§€λŠ” 리프 λ…Έλ“œμ™€ 같은 것을 확인할 수 μžˆλ‹€.

πŸ“– λ…Όν΄λŸ¬μŠ€ν„°λ“œ 인덱슀

  • ν…Œμ΄λΈ”λ‹Ή μ•½ 240개의 인덱슀λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
  • 인덱슀 νŽ˜μ΄μ§€λŠ” λ‘œκ·ΈνŒŒμΌμ— μ €μž₯λœλ‹€.
  • λ ˆμ½”λ“œμ˜ 원본은 μ •λ ¬λ˜μ§€ μ•Šκ³ , 인덱슀 νŽ˜μ΄μ§€λ§Œ μ •λ ¬λœλ‹€.
  • 인덱슀 자체의 리프 νŽ˜μ΄μ§€λŠ” 데이터가 μ•„λ‹ˆλΌ 데이터가 μœ„μΉ˜ν•˜λŠ” 포인터이기 λ•Œλ¬Έμ— ν΄λŸ¬μŠ€ν„°λ“œν˜•λ³΄λ‹€ 검색 μ†λ„λŠ” 더 λŠλ¦¬μ§€λ§Œ λ°μ΄ν„°μ˜ μž…λ ₯, μˆ˜μ •, μ‚­μ œλŠ” 더 λΉ λ₯΄λ‹€.
  • 인덱슀λ₯Ό 생성할 λ•Œ 데이터 νŽ˜μ΄μ§€λŠ” κ·Έλƒ₯ λ‘” μƒνƒœμ—μ„œ λ³„λ„μ˜ 인덱슀 νŽ˜μ΄μ§€λ₯Ό λ”°λ‘œ λ§Œλ“€κΈ° λ•Œλ¬Έμ— μš©λŸ‰μ„ 더 μ°¨μ§€ν•œλ‹€.


λ…Όν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€λŠ” 데이터 νŽ˜μ΄μ§€λ₯Ό 건듀지 μ•Šκ³ , λ³„λ„μ˜ μž₯μ†Œμ— 인덱슀 νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•œλ‹€.
μš°μ„  인덱슀 νŽ˜μ΄μ§€μ˜ 리프 νŽ˜μ΄μ§€μ— 인덱슀둜 κ΅¬μ„±ν•œ 열을 μ •λ ¬ν•˜κ³  데이터 μœ„μΉ˜ 포인터λ₯Ό μƒμ„±ν•œλ‹€. λ°μ΄ν„°μ˜ μœ„μΉ˜ ν¬μΈνŠΈλŠ” ν΄λŸ¬μŠ€ν„°λ“œν˜• μΈλ±μŠ€μ™€ 달리 'νŽ˜μ΄μ§€ 번호 + #μ˜€ν”„μ…‹'이 κΈ°λ‘λ˜μ–΄ λ°”λ‘œ 데이터 μœ„μΉ˜λ₯Ό 가리킨닀. indexTest2둜 예λ₯Ό λ“€λ©΄ 102번 νŽ˜μ΄μ§€μ˜ 두 번째(#2)에 데이터가 μžˆλ‹€κ³  κΈ°λ‘ν•˜κ²Œ λœλ‹€.

πŸ“š 정리

책에 λΉ„μœ ν•˜μžλ©΄ ν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€λŠ” νŽ˜μ΄μ§€λ₯Ό μ•ŒκΈ° λ•Œλ¬Έμ— λ°”λ‘œ κ·Έ νŽ˜μ΄μ§€λ₯Ό νŽ΄λŠ” 것이고, λ…Όν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€λŠ” 뒀에 λͺ©μ°¨μ—μ„œ 찾고자 ν•˜λŠ” λ‚΄μš©μ˜ νŽ˜μ΄μ§€λ₯Ό μ°Ύκ³  κ·Έ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ” 것과 κ°™λ‹€. ν…Œμ΄λΈ” ν’€ μŠ€μΊ”μ€ μ²˜μŒλΆ€ν„° ν•œ μž₯μ”© λ„˜κΈ°λ©΄μ„œ λ‚΄μš©μ„ μ°ΎλŠ” 것과 κ°™λ‹€.

ν΄λŸ¬μŠ€ν„°λ“œ 인덱슀

  • 검색 : ν…Œμ΄λΈ”μ˜ 데이터λ₯Ό 인덱슀 ν‚€ κΈ°μ€€μœΌλ‘œ 물리적으둜 μ •λ ¬λ˜μ–΄μžˆμ–΄ μ‘°νšŒν•  λ•Œ 좔가적인 μ°Έμ‘° 없이 직접 데이터에 μ ‘κ·Όν•  수 μžˆμ–΄ 빠름.
  • DML : 데이터 μ‚½μž…κ³Ό μ‚­μ œκ°€ λ°œμƒν•  경우 λ°μ΄ν„°μ˜ 물리적 μˆœμ„œ μœ μ§€λ₯Ό μœ„ν•΄ νŽ˜μ΄μ§€ λΆ„ν• μ΄λ‚˜ λ³΅μž‘ν•œ 데이터 이동이 ν•„μš”ν•  수 있음.

λ…Όν΄λŸ¬μŠ€ν„°λ“œ 인덱슀

  • 검색 : ν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€μ™€ 달리 λ³„λ„μ˜ κ³΅κ°„μ—μ„œ 인덱슀 ν‚€λ₯Ό 찾은 ν›„ μ‹€μ œ λ°μ΄ν„°μ˜ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό 따라 데이터 νŒŒμΌμ—μ„œ ν•΄λ‹Ή 데이터λ₯Ό μ°Ύμ•„μ•Ό ν•΄μ„œ ν΄λŸ¬μŠ€ν„°λ“œ μΈλ±μŠ€λ³΄λ‹€ μƒλŒ€μ μœΌλ‘œ 느림.
  • DML : 데이터 μ‚½μž…κ³Ό μ‚­μ œκ°€ λ°œμƒν•  경우 인덱슀 νŽ˜μ΄μ§€μ˜ 리프 λ…Έλ“œλ§Œμ„ μ—…λ°μ΄νŠΈ ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 빠름.
profile
κ°œλ°œμžμ™€ μœ μ‚¬ν•œ κ°œλ°œμžμž…λ‹ˆλ‹€

0개의 λŒ“κΈ€