database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29753 게시물 읽기
No. 29753
리플의 카운트를 셀때 원글에 리플카운트 컬럼을 줘서 +1하는게 좋을지요?
작성자
김영범(bumworld)
작성일
2010-08-12 08:54
조회수
8,153

drop table tb_board;
create table tb_board (
    board_no                integer auto_increment
    , parent_no                integer            default null
    , contents                longtext        not null
    , regist_date            datetime                not null
    , user_no                integer                    not null
    , primary key(board_no)
)
engine = innodb
character set utf8
comment = 'board'
;

위와 같은 테이블에서 리플을 작성하기 위해 parent_no에는 board_no가 들어 갑니다.

리플 테이블을 따로 분리해도 되지만 업무상 sns 사이트처럼 자기가 쓴글은 원글이던 리플이던

한번에 작성 순서에 따라서 보여줘야 해서 한개의 테이블로 설계했습니다.

고민인 부분이 리플의 카운트를 셀때 select 할때마다 서브쿼리로 가져올지

select

*

, (select count(1) from tb_board where parent_no=a.board_no) as reply_count

from

tb_board a

 

아니면 리플 카운트 컬럼을 추가해서 리플 insert시에 부모가 되는 글에 리플카운트를 +1를 해주는게 좋을지 확신이 안섭니다.

+1할때 insert 쿼리와 트랜젝션을 같이 묶어야 하는데 이부분이 서브쿼리로 처리했을때와 비교해서 어떤 영향을 미칠지 고민 입니다.

초기에는 어떤 방식이던 큰 문제가 안생기겠지만 데이타가 지속적으로 많이 쌓일경우에는

어떤 방식이 효율적일까요?

mysql 버전은 5.0.77-log 입니다. 인코딩은 utf-8로 되어 있구요. 개발은 자바에 spring + ibatis로 개발하고 있습니다.

많은 가르침 부탁드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

댓글이 달리는 수가 많은지, 댓글 개수를 보는 수가 많은지를 생각해보시면 답은 간단합니다.

일반적인 상황에서라면 1:100 정도의 비율이 아닐까요?

해보시면 아시겠지만, 댓글 수를 매번 세는 것이 적은 비용은 아닙니다.

 

저라면 본문 테이블에 댓글 수를 저장하도록 할 것 같습니다. 

lock-less하게 작성한다면 +1 이나 -1 말고 SELECT COUNT(*)로 댓글 수를 업데이트 하는 방법이 있겠습니다. 

박현우(lqez)님이 2010-08-12 09:54에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29756주식 같은 프로그램 테이블 구성시
정현철
2010-08-15
7315
29755mysql3.7과 mysql3.9의 차이점이 궁금합니다. [1]
진용우
2010-08-13
7055
29754반복쿼리문 procedure로 한번에 가능한가요? [1]
강삼수
2010-08-12
8019
29753리플의 카운트를 셀때 원글에 리플카운트 컬럼을 줘서 +1하는게 좋을지요? [1]
김영범
2010-08-12
8153
29752테이블 조인 문제.. [1]
건빵
2010-08-11
7709
29751NDB 32bit에서 tablespace생성 ? [1]
김서신
2010-08-10
7467
29750innodb ibdata 파일 유실.. [1]
조상진
2010-08-06
8094
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다