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