묻고답하기

저희 사이트 게시판 에서 제일 많은 게시물이 테이블 하나에 3만건 정도 밖에 안되거든요?
근데 게시판 목록 한번 열라면 제일 느린 테이블은 거즘 7~8초
좀 나은건 약 1~2초 정도 걸립니다.
환장하겠습니다.
전에 외주줘서 만들었다는데요. 어떻게 손을 대야할지.. 걱정됩니다.
그래서 도움을 청합니다.

1. 게시판 테이블 구조

2. 게시판 목록을 불러올때 사용하는 함수

3. 게시판 목록 출력되는 부분

으로 나눠 정리 해보았습니다.
확인후 많은 분들 조언및 의견 부탁드립니다.




// 게시판 테이블 구조

CREATE TABLE TAB_Boardmnw (
  BOD_Rowid int(11) NOT NULL auto_increment,
  BOD_Memid varchar(12) NOT NULL default '',
  BOD_Parent int(11) NOT NULL default '0',
  BOD_Indent int(11) NOT NULL default '0',
  BOD_Depth int(3) NOT NULL default '0',
  BOD_Name varchar(32) NOT NULL default '',
  BOD_Email varchar(64) NOT NULL default '',
  BOD_Subject varchar(64) NOT NULL default '',
  BOD_Sex char(2) NOT NULL default '',
  BOD_Avata int(1) NOT NULL default '0',
  BOD_Type char(1) NOT NULL default 'T',
  BOD_Contents text NOT NULL,
  BOD_Filename varchar(32) NOT NULL default '',
  BOD_Hit int(11) NOT NULL default '0',
  BOD_Opinion int(4) NOT NULL default '0',
  BOD_Against int(4) NOT NULL default '0',
  BOD_Date int(11) NOT NULL default '0',
  PRIMARY KEY  (BOD_Rowid),
  KEY BOD_Memid (BOD_Memid),
  KEY BOD_Parent (BOD_Parent),
  KEY BOD_Indent (BOD_Indent),
  KEY BOD_Email (BOD_Email)
) TYPE=MyISAM;




<?
// 함수 시작

function get_pagenum() {
global $board, $perpage;
include        "config/db_conn.php3";
$result        = mysql_query("SELECT COUNT(*) FROM        $board");
$tlpn[num] = mysql_result($result, 0, "COUNT(*)");
if ($tlpn[num] % $perpage) {
$tlpn[page]= intval($tlpn[num] / $perpage) + 1;
}
else {
$tlpn[page]= $tlpn[num]        / $perpage;
}
return $tlpn;
}


function arti_list($tlpn,$perpage)
{
include        "config/db_conn.php3";
global $board, $page;
$result        = lpp($tlpn, $perpage, $page);
return $result;
}


function lpp($tlpn,        $perpage, $page) {
global $board;
include        "config/db_conn.php3";
if (($tlpn[page] > $page) && ($page        > 1)) {        //******************* 중간페이지
$startlist = ($page        * $perpage)        - $perpage;
$result        = mysql_query("SELECT *        FROM $board        ORDER BY BOD_Parent        DESC, BOD_Indent ASC LIMIT $startlist,$perpage");
}
elseif ($page == 1)        { // ***************************************** 첫 페이지라면..
if ($tlpn[num] >= $perpage)        {
$result        = mysql_query("SELECT *        FROM $board        ORDER BY BOD_Parent        DESC, BOD_Indent ASC LIMIT 0,$perpage");
}
else {
$result        = mysql_query("SELECT *        FROM $board        ORDER BY BOD_Parent        DESC, BOD_Indent ASC LIMIT 0,$tlpn[num]");
}
}
elseif ($tlpn[page]        == $page) {        // ********************************        맨 마지막 페이지라면..
if ($tlpn[num] % $perpage) {
$startlist = ($page        * $perpage)        - $perpage;
$result        = mysql_query("SELECT *        FROM $board        ORDER BY BOD_Parent        DESC, BOD_Indent ASC LIMIT $startlist,$perpage");
}
else {
$startlist = ($page        * $perpage)        - $perpage;
$result        = mysql_query("SELECT *        FROM $board        ORDER BY BOD_Parent        DESC, BOD_Indent ASC LIMIT $startlist,$perpage");
}
}
else {
echo "잘못된 페이지";
exit;
}
return $result;
}
?>


//게시판 목록 출력하는 스크립트

<?
$tlpn =        get_pagenum();
$result        = arti_list($tlpn,$perpage);
$q = ($page        * $perpage)        - $perpage;
$p = $tlpn[num]        - $q;
while ($list = mysql_fetch_array($result)) {
$Nbsp =        "";
$DEPTH_Img = "";
for        ($j=0; $j <        $list[BOD_Depth]; $j++)        {
$Nbsp .= "   ";
}
if ($list[BOD_Depth] > 0) {
$DEPTH_Img = "<img src="img/bbt_re.gif" border="0">";
}
if ($list[BOD_Email]) {
$BOD_Name =        "<a        href="mailto:$list[BOD_Email]">$list[BOD_Name]</a>";
}else {
$BOD_Name =        $list[BOD_Name];
}
$BOD_Date =        date("Y.m.d",$list[BOD_Date]);
$BOD_Subject = stripslashes($list[BOD_Subject]);
?>
<tr>
<td        align="center" height="27"><?=$p?></td>
<td></td>
<td><?=$Nbsp?><?=$DEPTH_Img?><a        href="board_mnw_view.html?BOD_Id=<?=$list[BOD_Rowid]?>&page=<?=$page?>"><?=$BOD_Subject?></a>
<!-- 의견글        카운트 -->
<?
$result1 = mysql_query("SELECT BOD_Rowid FROM TAB_Opinion WHERE        BOD_Board='$board' AND BOD_Parent='$list[BOD_Rowid]'");
$O_Count = mysql_num_rows($result1);
if ($O_Count > 0) {
echo "(        $O_Count )";
}
?>
<?
$OUT_Time =        60*60*24*1;
$TIME_Diff = time()        - $list[BOD_Date];
if ($TIME_Diff < $OUT_Time)        {echo "  <img        src='img/new.gif' align='absmiddle'>";}
?>
</td>
<td></td>
<td        align="center"><?=$BOD_Name?></td>
<td></td>
<td        align="center"><?=$list[BOD_Hit]?></td>
<td></td>
<td        align="center"><font color="#999999"><?=$BOD_Date?></font></td>
<td></td>
<td        align="center"><font color="#006600">
<?=$list[BOD_Opinion]?></font>/<font color="#CC0000"><?=$list[BOD_Against]?></font>
</td>
</tr>
<tr>
<td        height="1" colspan="11"        bgcolor="ECECEC"></td>
</tr>
<?$p--;}?>

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
목맨천사 한글 아이디 로그인 가능하게 할 수 있을까요?  
아웅졸려라 댓글의 댓글을 쓸때, 새로운 페이지가 보여지지 않고, 기존 페이지에서 보이게 하는 방법이 없을까요? [3] file 2014.05.07 by 아웅졸려라
불타는박서 고수님들 이미지맵에 대해서 물어보겠습니다. [3] 2014.05.07 by 불타는박서
putty 게시판 메뉴 추가하기 방법 질문입니다 (사진 有) file  
어라얼랑 확장 변수 값 문의 드립니다 [6] 2014.05.07 by 어라얼랑
씨디맨 제로보드XE로 만든 사이트 검색 문제 [1] file 2014.05.07 by 키스투엑스이
왜만지냐 해외스팸글 차단 할수 있는방법 없을까요?? [1] file 2014.05.07 by 키스투엑스이
쿠드반지루엣 파일 업로드 용량 변경 문의 [3] file 2014.05.07 by mugenk
6869994 회원 등급 조정이 되지 않습니다.  
제이디600 <자동 입력 확인 중 입니다> 등록이 안됩니다  
제로보드굿짱 위젯스타일 코드 어떻게 알수있죠? [1] 2014.05.07 by mindpainter
ChickenDever 모바일 url  
1111ㅇㅇㅇ 그룹 연동 포인트 최대치 수정 할 수 있나요?  
bea짱이 text코드 질문있습니다 [2] file 2014.05.07 by bea짱이
이주연743 모바일 페이지 뜰때 "오늘의 쿠폰" 팝업 [1] 2014.05.07 by 콩까기
제로보드굿짱 위젯페이지말고 레이아웃에 위젯을 넣고싶은데요.. [2] 2014.05.07 by 콩까기
Opentide 사라진 메뉴 에디터의 내용들 [1] file 2014.05.07 by BJ람보
카이네드 자료실 모듈 모든버전보기 [3] 2014.05.07 by BJ람보
qwqwwewe 도메인 연결 질문 마지막이요. [3] 2014.05.07 by BJ람보
희망규짱 네이버 아이디로 회원을 [1] 2014.05.07 by KrteamENT
땡치리 홈페이지 메인설정 변경... [2] 2014.05.07 by 땡치리
qwqwwewe 사이트 접속 문의좀요. [3] 2014.05.07 by qwqwwewe
제로보드굿짱 외부페이지 위젯스타일,위젯삽입방법..  
제로보드굿짱 xe 공홈에 적용중인 댓글알림이요 [2] 2014.05.06 by 제로보드굿짱
제로보드굿짱 회원동기화 눌렀더니 카운터에 회원수랑 댓글,문서가 초기화되버렸습니다.  
designare0 혹시 이미지 정렬 하는 (blocksit 처럼) 게시판 스킨이 있나요?  
나리_ 어느 파일 수정해야하는지 질문드려요! [1] 2014.05.06 by 애니즌
cycix2 임시비밀번호 발급시 버튼 문제입니다  
나리_ html 태그 질문이요! [3] 2014.05.06 by 나리_
청아전기1 로그인이 되지 않아요. [6] file 2014.05.06 by 청아전기1