bbs/view.php가 이상하다... (2)

불당   
   조회 6648   추천 0    

(1)번에서 뭐가 문제인지 찾아서 응급조치를 했습니다.

http://opencode.co.kr/bbs/board.php?bo_table=gnu4_turning&wr_id=258


그런데, 이거도 상당한 query 부하가 됩니다.

검색 query와 무관한 것이 있는 경우에는...

그래서 tmp_table을 쓰도록 수정해주는 것이 필요합니다.

이것은 조금 더 난이도가 있기에 (2)번 튜닝이라고 합니다.


임시파일이 자동으로 뽀개지지 않기 때문에, tmp 파일을 2개 만듭니다.

sql로 부수는 것도 가능하지만 그것도 일이라... 안하는게 나을거 같아요.


그나저나... 팀장닷컴 때문에 코드가 걸레처럼...ㄷㄷㄷ


if (!$board['bo_use_list_view']) {
    if ($sql_search)
        $sql_search = " and " . $sql_search;

    // 윗글을 얻음
    // 불당팩 - tmp table을 만들고, 거기서 한판 더 돌리는게 빠르다. $sql_search는 index를 안타니까...
    // 팀장처럼 create temporaty table의 권한을 안주는 경우, config.php에서 $g4['old_stype_search'] 설정값을 1로.
    if ($g4['old_stype_search']) {
        if ($write['wr_reply']) {
            // 답글일 때. 답글이 아닐 때는 돌려봐야 답이 없습니다.
            $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply < '$write[wr_reply]' $sql_search order by wr_num desc, wr_reply desc limit 1 ";
            $prev = sql_fetch($sql);
        }
        // 위의 쿼리문으로 값을 얻지 못했다면
        if (!$prev['wr_id'])     {
            $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num < '$write[wr_num]' $sql_search order by wr_num desc, wr_reply desc limit 1 ";
            $prev = sql_fetch($sql);
        }
    } else {
        if ($write['wr_reply']) {
            // 답글일 때. 답글이 아닐 때는 돌려봐야 답이 없습니다.
            $sql = " select * from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply < '$write[wr_reply]' ";
            $sql_tmp = " create TEMPORARY table view_tmp_prev as $sql ";
            $sql_ord = " select wr_id, wr_subject from view_tmp_prev where 1 $sql_search order by wr_num desc, wr_reply desc limit 1 ";

            @mysql_query($sql_tmp) or die("<p>$sql_tmp<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $result = @mysql_query($sql_ord) or die("<p>$sql_ord<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $prev = @mysql_fetch_assoc($result);
        }
        // 위의 쿼리문으로 값을 얻지 못했다면
        if (!$prev['wr_id'])     {
            $sql = " select * from $write_table where wr_is_comment = 0 and wr_num < '$write[wr_num]' ";
            $sql_tmp = " create TEMPORARY table view_tmp_prev1 as $sql ";
            $sql_ord = " select wr_id, wr_subject from view_tmp_prev1 where 1 $sql_search order by wr_num desc, wr_reply desc limit 1 ";

            @mysql_query($sql_tmp) or die("<p>$sql_tmp<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $result = @mysql_query($sql_ord) or die("<p>$sql_ord<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $prev = @mysql_fetch_assoc($result);
        }
    }

    // 아래글을 얻음
    // 불당팩 - tmp table을 만들고, 거기서 한판 더 돌리는게 빠르다. $sql_search는 index를 안타니까...
    // 팀장처럼 create temporaty table의 권한을 안주는 경우, config.php에서 $g4['old_stype_search'] 설정값을 1로.
    if ($g4['old_stype_search']) {
        if ($write['wr_reply']) {
            // 답글일 때. 답글이 아닐 때는 돌려봐야 답이 없습니다.
            $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply > '$write[wr_reply]' $sql_search order by wr_num, wr_reply limit 1 ";
            $next = sql_fetch($sql);
        }
        // 위의 쿼리문으로 값을 얻지 못했다면
        if (!$next['wr_id']) {
            $sql = " select wr_id, wr_subject from $write_table where wr_is_comment = 0 and wr_num > '$write[wr_num]' $sql_search order by wr_num, wr_reply limit 1 ";
            $next = sql_fetch($sql);
        }
    } else {
        if ($write['wr_reply']) {
            // 답글일 때. 답글이 아닐 때는 돌려봐야 답이 없습니다.
            $sql = " select * from $write_table where wr_is_comment = 0 and wr_num = '$write[wr_num]' and wr_reply > '$write[wr_reply]' ";
            $sql_tmp = " create TEMPORARY table view_tmp_next as $sql ";
            $sql_ord = " select wr_id, wr_subject from view_tmp_next where 1 $sql_search order by wr_num, wr_reply limit 1 ";

            @mysql_query($sql_tmp) or die("<p>$sql_tmp<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $result = @mysql_query($sql_ord) or die("<p>$sql_ord<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $next = @mysql_fetch_assoc($result);
        }
        // 위의 쿼리문으로 값을 얻지 못했다면
        if (!$next['wr_id'])     {
            $sql = " select * from $write_table where wr_is_comment = 0 and wr_num > '$write[wr_num]' ";
            $sql_tmp = " create TEMPORARY table view_tmp_next1 as $sql ";
            $sql_ord = " select wr_id, wr_subject from view_tmp_next1 where 1 $sql_search order by wr_num, wr_reply limit 1 ";

            @mysql_query($sql_tmp) or die("<p>$sql_tmp<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $result = @mysql_query($sql_ord) or die("<p>$sql_ord<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
            $next = @mysql_fetch_assoc($result);
        }
    }
}

- opencode.co.kr -
BBS 타이어파트너
벤츠, BMW, 아우디, 폭스바겐 재규어 현대기아순정휠 , 사제휠타이어 일산지역
BBS 정품휠 원타이어
BBS국산휠,수입휠,순정휠, 정품휠 신속상담 최선을 다하는 매장 원타이어
BBS코리아
독일,일본,전제품,전차종,수입차,국산차,초경량휠,휠119단독판매 및 A/S
파워링크 AD   클릭초이스등록


제목Page 1/4
2010-06   9811   불당
2011-01   13463   불당
2013-05   10909   불당
2016-08   2302   불당
2016-08   2362   불당
2016-08   2305   불당
2016-08   17469   불당
2015-10   3660   불당
2014-02   6787   불당
2014-02   6649   불당
2014-02   6853   불당
2013-06   9453   불당
2013-05   10909   불당
2013-05   10489   불당
2013-01   12671   불당
2011-12   15056   불당
2011-12   11356   불당
2011-09   12492   불당
2011-09   10912   불당
2011-06   11120   불당
2011-01   10485   불당
2011-01   13219   불당
2011-01   13463   불당