안녕하세요.
게시판에서 읽은날짜 이후에 댓글이 달린경우 그 갯수를 가져오려고 합니다.
댓글 등록시 현재날짜가 WDT,MDT에 INSERT가 되고, 수정시는 MDT에 현재 날짜가 UPDATE됩니다.
총 댓글이 2000만건인데 속도가 느린부분을 수정가능할까요?
댓글 테이블
CMMT_SEQ | BOARD_SEQ | CONTENTS | WDT | MDT |
1 | 100 | test | 2023-03-01 | 2023-03-01 |
2 | 100 | test | 2023-03-04 | 2023-03-04 |
3 | 101 | test | 2023-03-05 | 2023-03-05 |
4 | 102 | test | 2023-03-06 | 2023-03-06 |
게시판 테이블
BOARD_SEQ | TITLE | CONTENTS | VIEW_DT |
100 | 제목 | 내용 | 2023-03-01 |
101 | 제목 | 내용 | 2023-03-02 |
102 | 제목 | 내용 | 2023-03-03 |
쿼리
SELECT SUM(( SELECT COUNT(*) FROM cmmt WHERE mdt > board.view_dt )) aa FROM board board WHERE board_seq IN ( SELECT a.board_seq FROM board a WHERE a.del_yn != 'Y' )
총 갯수는 댓글1번을 제외하고 3건이 나와야됩니다.
속도가 3~4초정도 나오는데 더 줄일수있는 방법이 있을까요?
WITH board AS ( SELECT 100 board_seq, '제목' title, '내용' contents, '2023-03-01' view_dt, 'N' del_yn FROM dual UNION ALL SELECT 101, '제목', '내용', '2023-03-02', 'N' FROM dual UNION ALL SELECT 102, '제목', '내용', '2023-03-03', 'N' FROM dual ) , cmmt AS ( SELECT 1 cmmt_seq, 100 board_seq, 'test' contents, '2023-03-01' wdt, '2023-03-01' mdt FROM dual UNION ALL SELECT 2, 100, 'test', '2023-03-04', '2023-03-04' FROM dual UNION ALL SELECT 3, 101, 'test', '2023-03-05', '2023-03-05' FROM dual UNION ALL SELECT 4, 102, 'test', '2023-03-06', '2023-03-06' FROM dual ) SELECT b.board_seq , COUNT(c.board_seq) cnt FROM board b LEFT OUTER JOIN cmmt c ON b.board_seq = c.board_seq AND b.view_dt < c.mdt WHERE b.del_yn != 'Y' GROUP BY b.board_seq ;