100만건이 넘는 데이터의 카운트를 조정하려할때, > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

100만건이 넘는 데이터의 카운트를 조정하려할때, 정보

100만건이 넘는 데이터의 카운트를 조정하려할때,

본문

그누보드 게시판 관리자페이지에 보면,
해당게시판의 카운트를 조절하는 부분이 있습니다.
기존방식으로 하면 다소 느릴 수 있는 것을 최적화 해보았습니다.
 
파일 : /adm/board_form_update.php
라인 : 207 라인근처 ( // 글수 조정 ) 주석 아래입니다.
 
 변경전
 // 글수 조정
    if ($proc_count) {
        // 원글을 얻습니다.
        $sql = " select wr_id from $g4[write_prefix]$bo_table where wr_is_comment = 0 ";
        $result = sql_query($sql);
        for ($i=0; $row=sql_fetch_array($result); $i++) {
   // 코멘트수를 얻습니다.
            $sql2 = sql_query(" select count(*) as cnt from $g4[write_prefix]$bo_table where wr_parent = '$row[wr_id]' and wr_is_comment = 1 ");
            $row2 = sql_fetch_array($sql2);
            sql_query(" update $g4[write_prefix]$bo_table set wr_comment = '$row2[cnt]' where wr_id = '$row[wr_id]' ");
   echo ".";
   if ($i%50==0) { echo "<br/>";  flush(); }
        }
  mysql_free_result($result);
 }
 
 
 
변경후
 // 글수 조정
    if ($proc_count) {
        // 원글을 얻습니다.
        $sql = " select a.wr_id,count(b.wr_parent) as cnt from $g4[write_prefix]$bo_table a, $g4[write_prefix]$bo_table b where a.wr_id=b.wr_parent and a.wr_is_comment=0 group by a.wr_id";
        $result = sql_query($sql);
        for ($i=0; $row=sql_fetch_array($result); $i++) {
   
        sql_query(" update $g4[write_prefix]$bo_table set wr_comment = '$row[cnt]' where wr_id = '$row[wr_id]' ");
   echo ".";
   if ($i%50==0) { echo "<br/>";  flush(); }
        }
  mysql_free_result($result);
 }
 
 
 
추천
9

댓글 9개

그렇네요. 아마 제가 저부분 테스트 하면서 100만건의 데이터가 타게시판 3개를 통합한거라, 순차적으로 잘나왔는지 확인할려고 끼워넣어두었던 겁니다^^;;

수정하였습니다!
이 글 방법을 토대로 해봤는데 속도는 빨라졌습니다.

하지만 오류가 있는거 같네요. 카운트 조정을 하게 되면 코멘트를 작성하지 않은 글에 +1 코멘트 댓글이 달려있다고 뜹니다. 그 게시물을 들어가보면 코멘트를 단 사람은 없는데 말이지요.

어떻게 해야 하나요 ?
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT