Make Be BackEnd
[Test] 댓글에 대한 구현... 댓글,대댓글->무한댓글 본문
현상
MySQL 에서 대댓글까지 2래밸만 가능했다.. 3래밸로 했을때 정렬이 제대로 되지 않는다
Test 계획
무한댓글이 가능하도록 시도해보자..!!
해결
https://initsave.tistory.com/386
[MySQL] 계층 쿼리 (hierarchical query)
계층 쿼리란 무엇일까? 주로 트리 구조 데이터를 쿼리하는데 사용되며, 재귀쿼리(자기 자신을 반복적으로 참조, 부모-자식 참조)의 일종으로 계층적 데이터를 처리하는 쿼리이다. (이전 포스팅
initsave.tistory.com
기존 MySQL 에서 CTE 방법을 참고 해서 무한댓글 처리 !
WITH RECURSIVE commentSort AS (
SELECT CAST(LPAD(comment_seq, 5, '0') AS CHAR(100)) AS cs,
comment_seq,
parent_comment_seq,
content,
board_seq,
board_type_seq,
reg_dtm,
update_dtm,
delete_dtm,
member_seq,
0 AS lvl
FROM board_comment
WHERE parent_comment_seq IS NULL
UNION ALL
SELECT CONCAT(cs.cs, '.', LPAD(bc.comment_seq, 5, '0')) AS cs,
bc.comment_seq,
bc.parent_comment_seq,
bc.content,
bc.board_seq,
bc.board_type_seq,
bc.reg_dtm,
bc.update_dtm,
bc.delete_dtm,
bc.member_seq,
cs.lvl + 1
FROM board_comment bc
INNER JOIN commentSort cs ON bc.parent_comment_seq = cs.comment_seq)
SELECT cs.comment_seq,
cs.lvl,
cs.content,
cs.board_seq,
cs.board_type_seq,
cs.member_seq,
cs.parent_comment_seq AS parent_seq,
cs.content,
cs.update_dtm,
cs.delete_dtm,
m.member_nm
FROM commentSort cs
JOIN member m ON cs.member_seq = m.member_seq
WHERE cs.board_type_seq = #{boardTypeSeq}
AND cs.board_seq = #{boardSeq}
ORDER BY cs.cs;
소요 시간은 588(ms).. 아직 쿼리양이 얼마 되지 않아서 성능적인 부분은 확신이 없지만 대대대대대댓글을 하는 방식을 이번시간을 통해서 고민해볼 수 있었다.

'ETC' 카테고리의 다른 글
| [WinMerge] 파일, 폴더 비교 및 병합 도구 (0) | 2024.06.27 |
|---|---|
| CI(Continuous Integration), 지속적 통합/CD(Continuous Delivery or Continuous Deployment), 지속적 배포/지속적 전달 ? (0) | 2024.06.24 |
| [도커] 도커 실행 및 사용방법 (0) | 2024.04.29 |
| [Docker] 도커 이해와 설치하기 (0) | 2024.04.19 |
| [스터디/기본셋팅버전] 2024.04.07 ~ (0) | 2024.04.12 |