Home > DB > πŸ’Ύ[Database] κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 - νŽ˜μ΄μ§• μ΅œμ ν™” 곡식

πŸ’Ύ[Database] κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 - νŽ˜μ΄μ§• μ΅œμ ν™” 곡식
Database Database Optimization

πŸ’Ύ[Database] κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 - νŽ˜μ΄μ§• μ΅œμ ν™” 곡식

πŸ“Œ Intro.

  • β†˜οΈŽ $(((n - 1) / k) + 1) * m * k + 1$
    • β†˜οΈŽ 이 곡식은 β€œνŽ˜μ΄μ§€λ„€μ΄μ…˜(Pagination)β€μ—μ„œ 이동 κ°€λŠ₯ν•œ νŽ˜μ΄μ§€ 번호λ₯Ό 효율적으둜 κ³„μ‚°ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ κ²ƒμž„.
    • β†˜οΈŽ 주둜 νŽ˜μ΄μ§•μ—μ„œ 일뢀 λ°μ΄ν„°λ§Œ μΉ΄μš΄νŠΈν•˜μ—¬ νš¨μœ¨μ„±μ„ 높이기 μœ„ν•œ μ ‘κ·Ό λ°©μ‹μž„.

βœ…1️⃣ κ³΅μ‹μ˜ 각 μš”μ†Œ μ„€λͺ….

  • β†˜οΈŽ $n$ : ν˜„μž¬ νŽ˜μ΄μ§€ 번호 (1λΆ€ν„° μ‹œμž‘)
  • β†˜οΈŽ $m$ : ν•œ νŽ˜μ΄μ§€λ‹Ή 보여쀄 κ²Œμ‹œκΈ€ 수
  • β†˜οΈŽ $k$ : ν•œ λ²ˆμ— 보여쀄 이동 κ°€λŠ₯ν•œ νŽ˜μ΄μ§€ 수
  • β†˜οΈŽ $(n - 1) / k$ : ν˜„μž¬ νŽ˜μ΄μ§€κ°€ μ†ν•œ νŽ˜μ΄μ§€ 그룹의 인덱슀λ₯Ό ꡬ함 (λͺ«λ§Œ μ‚¬μš©)

βœ…2️⃣ 곡식 해석 단계별 μ„€λͺ….

1️⃣ $(n-1) / k$

  • β†˜οΈŽ $(n - 1)$을 톡해 ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ 1을 λΉΌμ„œ, 0λΆ€ν„° μ‹œμž‘ν•˜λŠ” 인덱슀둜 λ³€ν™˜.
    • β†˜οΈŽ 이λ₯Ό $k$둜 λ‚˜λˆ„μ–΄, ν˜„μž¬ νŽ˜μ΄μ§€κ°€ μ†ν•œ νŽ˜μ΄μ§€ 그룹의 인덱슀λ₯Ό ꡬ함.
      • β†˜οΈŽ λ‚˜λ¨Έμ§€λŠ” 버림(즉, μ •μˆ˜ λͺ«λ§Œ μ‚¬μš©)
        • β†˜οΈŽ μ˜ˆμ‹œ: $n = 7, k = 10 ➞ (7 - 1) / 10 = 0$

2️⃣ $((n - 1) / k) + 1$

  • β†˜οΈŽ νŽ˜μ΄μ§€ 그룹의 μΈλ±μŠ€μ— 1을 더해 ν˜„μž¬ νŽ˜μ΄μ§€ κ·Έλ£Ή 번호λ₯Ό ꡬ함.
    • β†˜οΈŽ μ˜ˆμ‹œ: $((7 - 1) / 10) + 1 = 0 + 1 = 1$

3️⃣ $((n - 1) / k) + 1) * m * k$

  • β†˜οΈŽ νŽ˜μ΄μ§€ κ·Έλ£Ή λ²ˆν˜Έμ— $m$(ν˜„μž¬ νŽ˜μ΄μ§€ 번호)κ³Ό $k$(ν•œ λ²ˆμ— 보여쀄 이동 κ°€λŠ₯ν•œ νŽ˜μ΄μ§€ 수)λ₯Ό κ³±ν•΄, ν˜„μž¬ νŽ˜μ΄μ§€ κ·Έλ£Ήμ—μ„œμ˜ μ’… κ²Œμ‹œκΈ€ 수λ₯Ό ꡬ함.
    • β†˜οΈŽ μ˜ˆμ‹œ: $1 * 30 * 10 = 300$

4️⃣ $+1$

  • β†˜οΈŽ λ§ˆμ§€λ§‰μ— $+1$ν•¨μœΌλ‘œμ¨ μ˜€ν”„μ…‹(offser) 보정을 μˆ˜ν–‰.
    • β†˜οΈŽ 주둜 0-based index와 1-based index κ°„μ˜ 차이λ₯Ό λ³΄μ •ν•˜κΈ° μœ„ν•œ μ—°μ‚°.
      • β†˜οΈŽ μ˜ˆμ‹œ: $300 + 1 = 301$

πŸ™‹β€β™‚οΈ μ˜€ν”„μ…‹(Offset)
주둜 λ°μ΄ν„°λ² μ΄μŠ€ νŽ˜μ΄μ§• μ²˜λ¦¬λ‚˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œ 계산 λ“±μ—μ„œ μ‚¬μš©λ˜λ©°, μ‹œμž‘ μ§€μ μ—μ„œμ˜ μƒλŒ€μ  μœ„μΉ˜λ₯Ό μ˜λ―Έν•¨.

βœ…3️⃣ κ³΅μ‹μ˜ 의미.

  • β†˜οΈŽ 이 곡식은 ν˜„μž¬ νŽ˜μ΄μ§€ 그웁에 λŒ€ν•œ μ΅œλŒ€ κ²Œμ‹œκΈ€ 수λ₯Ό 계산함.
    • β†˜οΈŽ 이둜 인해 λͺ¨λ“  κ²Œμ‹œκΈ€μ„ 세지 μ•Šκ³ λ„ νŽ˜μ΄μ§•μ„ 효율적으둜 계산 κ°€λŠ₯.
    • β†˜οΈŽ λ˜ν•œ, 이동 κ°€λŠ₯ν•œ νŽ˜μ΄μ§€ 번호λ₯Ό 효율적으둜 κ³„μ‚°ν•˜μ—¬ μ„±λŠ₯을 μ΅œμ ν™” ν•  수 있음.

βœ…4️⃣ μ‹€μ œ μ‚¬μš© μ‹œλ‚˜λ¦¬μ˜€.

  • 1️⃣ μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ„€μ΄μ…˜μ„ 톡해 νŠΉμ • νŽ˜μ΄μ§€(n)에 μ ‘κ·Ό.
  • 2️⃣ 전체 κ²Œμ‹œκΈ€ 수λ₯Ό μ•Œ ν•„μš” 없이, ν•΄λ‹Ή νŽ˜μ΄μ§€ 그룹의 κ²Œμ‹œκΈ€ 수만 확인.
  • 3️⃣ 이 곡식을 톡해 ν•„μš”ν•œ λ²”μœ„μ˜ κ²Œμ‹œκΈ€λ§Œ μΏΌλ¦¬ν•˜κ±°λ‚˜ 계산함.
  • 4️⃣ μ‚¬μš©μžκ°€ 효율적으둜 νŽ˜μ΄μ§€ 이동을 ν•  수 있음.

πŸ‘‰πŸ“ ν•œ 쀄 μš”μ•½.

  • β†˜οΈŽ β€œμ΄ 곡식은 ν˜„μž¬ νŽ˜μ΄μ§€ 그룹을 κΈ°μ€€μœΌλ‘œ 이동 κ°€λŠ₯ν•œ νŽ˜μ΄μ§€ 번호 및 κ²Œμ‹œκΈ€ λ²”μœ„λ₯Ό 효율적으둜 κ³„μ‚°ν•˜μ—¬, λΆˆν•„μš”ν•œ 전체 κ²Œμ‹œκΈ€ 카운트 μž‘μ—…μ„ νšŒν”Όν•˜λŠ” νŽ˜μ΄μ§• νšŒμ ν™” κ³΅μ‹μž„.”