Home
>
Backend Development
>
π[Backend Development] μ΅λ 2 Depth λκΈ μ λ ¬ ꡬ쑰μ '무ν μ€ν¬λ‘€ λ°©μ'μ΄λ 무μμΌκΉμ?
Backend Ddevelopment
βπ[Backend Development] μ΅λ 2 Depth λκΈ μ λ ¬ ꡬ쑰μ β무ν μ€ν¬λ‘€ λ°©μβμ΄λ 무μμΌκΉμ?β
β
μ΅λ 2 Depth λκΈ μ λ ¬ ꡬ쑰μ β무ν μ€ν¬λ‘€ λ°©μβ μ€λͺ
.
- 무ν μ€ν¬λ‘€ λ°©μμ νμ΄μ§ λ²νΈ λ°©μ(LIMIT ?, OFFSET ?)μ μ¬μ©νμ§ μκ³ , λ§μ§λ§μΌλ‘ λΆλ¬μ¨ λκΈμ IDλ₯Ό κΈ°μ€μΌλ‘ λ€μ λκΈμ λΆλ¬μ€λ λ°©μ(Keyset Pagination)μ
λλ€.
- μ΄ λ°©μμ νμ΄μ§ λ²νΈ λ°©μλ³΄λ€ μ±λ₯μ΄ μ°μνμ¬, λλμ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² λ‘λν μ μμ΅λλ€.
ποΈ1οΈβ£ 무ν μ€ν¬λ‘€ λ°©μμ΄λ?
- 무ν μ€ν¬λ‘€ λ°©μμ λ§μ§λ§μΌλ‘ λΆλ¬μ¨ λκΈ(lastCommentId)μ κΈ°μ€μΌλ‘ κ·Έ μ΄ν λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ°©μμ
λλ€.
SELECT * FROM comment
WHERE article_id = ?
AND comment_id > ?
ORDER BY parent_comment_id ASC, comment_id ASC
LIMIT ?;
SQL ν€μλ |
μ€λͺ
|
WHERE comment_id > ? |
λ§μ§λ§ λκΈ ID μ΄ν λ°μ΄ν°λ§ κ°μ Έμ΄ |
ORDER BY parent_comment_id ASC, comment_id ASC |
λΆλͺ¨-μμ κ΄κ³λ₯Ό μ μ§νλ©΄μ μ λ ¬ |
LIMIT ? |
ν λ²μ κ°μ Έμ¬ μ΅λ κ°μ μ§μ |
- π μ΄ λ°©μμ μ¬μ©νλ©΄ OFFSETμ μ¬μ©νμ§ μκΈ° λλ¬Έμ μ±λ₯μ΄ ν¨μ¬ μ°μν©λλ€.
ποΈ2οΈβ£ SQL μμ (무ν μ€ν¬λ‘€ λ°©μ)
- μλ₯Ό λ€μ΄, ν λ²μ 3κ°μ λκΈμ λΆλ¬μ€λλ‘ μ€μ νκ³ , λ§μ§λ§μΌλ‘ λΆλ¬μ¨ λκΈμ ID(lastCommentId)κ° 3μ΄λΌκ³ κ°μ ν©λλ€.
SELECT * FROM comment
WHERE article_id = ?
AND comment_id > 3
ORDER BY parent_comment_id ASC, comment_id ASC
LIMIT 3;
ποΈ3οΈβ£ μ λ ¬ λ°©μ
π μ λ ¬ κΈ°μ€.
ORDER BY parent_comment_id ASC, comment_id ASC
-
-
μ΅μμ λκΈμ λ¨Όμ μ λ ¬ β parent_comment_id IS NULL μμλλ‘ μ λ ¬
-
-
λλκΈμ κ°μ λΆλͺ¨ μλμμ μ λ ¬ β comment_id ASC μμλ‘ μ λ ¬
-
- νμ΄μ§ μμ΄ WHERE comment_id > lastCommentId λ°©μμΌλ‘ μ‘°ν
ποΈ4οΈβ£ λ°μ΄ν° μμ.
π λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ λκΈ λ°μ΄ν°
comment_id |
parent_comment_id |
λ΄μ© |
1 |
NULL |
λκΈ1 (μ΅μμ λκΈ) |
2 |
1 |
λκΈ2 (λκΈ1μ λλκΈ) |
3 |
NULL |
λκΈ3 (μ΅μμ λκΈ) |
4 |
1 |
λκΈ4 (λκΈ1μ λλκΈ) |
5 |
3 |
λκΈ5 (λκΈ3μ λλκΈ) |
6 |
NULL |
λκΈ6 (μ΅μμ λκΈ) |
π 무ν μ€ν¬λ‘€ λ°©μμΌλ‘ λ°μ΄ν° μ‘°ν.
SELECT * FROM comment
WHERE article_id = ?
AND comment_id > 0
ORDER BY parent_comment_id ASC, comment_id ASC
LIMIT 3;
π κ²°κ³Ό
comment_id |
parent_comment_id |
λ΄μ© |
1 |
NULL |
λκΈ1 (μ΅μμ λκΈ) |
2 |
1 |
λκΈ2 (λκΈ1μ λλκΈ) |
4 |
1 |
λκΈ4 (λκΈ1μ λλκΈ) |
- π λ§μ§λ§ λκΈ ID = 4
SELECT * FROM comment
WHERE article_id = ?
AND comment_id > 4
ORDER BY parent_comment_id ASC, comment_id ASC
LIMIT 3;
π κ²°κ³Ό
comment_id |
parent_comment_id |
λ΄μ© |
3 |
NULL |
λκΈ3 (μ΅μμ λκΈ) |
5 |
3 |
λκΈ5 (λκΈ3μ λλκΈ) |
6 |
NULL |
λκΈ6 (μ΅μμ λκΈ) |
- π λ§μ§λ§ λκΈ ID = 6
ποΈ5οΈβ£ μ₯μ κ³Ό λ¨μ .
μ₯μ |
λ¨μ |
OFFSET μμ΄ λΉ λ₯Έ μ‘°ν κ°λ₯ (μ±λ₯ μ΅μ ν) |
lastCommentIdλ₯Ό ν΄λΌμ΄μΈνΈκ° μ μ§ν΄μΌ ν¨ |
λλμ λκΈμ΄ μλ κ²½μ° ν¨μ¨μ |
λκΈμ΄ μμ λ κ²½μ° μ λ ¬μ΄ ννΈλ¬μ§ κ°λ₯μ±μ΄ μμ |
νμ΄μ§ λ²νΈ λ°©μλ³΄λ€ νμ₯μ±μ΄ μ’μ |
μ λ ¬ μμκ° μ μ§λλλ‘ μ‘°μ¬ν΄μΌ ν¨ |
π6οΈβ£ μ 리.
- β
무ν μ€ν¬λ‘€ λ°©μμ WHERE comment_id > lastCommentIdλ₯Ό μ¬μ©νμ¬ λ°μ΄ν° μ‘°ν
- β
ORDER BY parent_comment_id ASC, comment_id ASCλ₯Ό μ¬μ©ν΄ κ³μΈ΅ ꡬ쑰 μ μ§
- β
νμ΄μ§ λ²νΈ λ°©μ(LIMIT ?, OFFSET ?)λ³΄λ€ μ±λ₯μ΄ μ°μνλ©° λλ λ°μ΄ν° μ²λ¦¬μ μ ν©
- β
λ§μ§λ§ λκΈ ID(lastCommentId)λ₯Ό μ μ§ν΄μΌ ν¨
- π μ΅λ 2 Depth λκΈ κ΅¬μ‘°μμλ 무ν μ€ν¬λ‘€ λ°©μμ΄ μ±λ₯ μ΅μ νμ μ 리νλ©°, λΉ λ₯΄κ² λκΈμ λΆλ¬μ¬ μ μμ΅λλ€.