묻고답하기

저희 사이트 게시판 에서 제일 많은 게시물이 테이블 하나에 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] 2007.08.10
WEd™ php 게시판리스트 출력시 넘 느려요  
peacemaker00 이미지를 이런 형식으로 변화 시키려면 어떻게 해야하나요?  
김경미 서버 등록자에 관해  
강성민 3단 동적 Select 문 관련 질문입니다.  
보리뚱땡 체크 박스에 대한 질문 다시요 --;  
이화일 어렵게 계정을 받았는데요. 서버가 asp를 쓰더라구요.  
강성민 초보의 태그(태그관련이 맞는지도 모르겠네요)에 관한 질문입니다.  
-G.W- 아이프레임을 이용하지 않고 메인부분만 바뀌게 하는법을 알고 싶습니다..^^:;  
jang 외부로그인 홈페이지 삽입에 대해서 알려주세영..책을 보고 똑같이 따라 했더니 자꾸 에러메세지만 뜨고.....  
NETSIA 노프레임 홈페이지 만들다가 오류가 [1] 2007.08.10
문영기 asp에서 노프레임을 구현하는 방법 좀 알려주세염... [3] 2007.08.10
이주연 미치겠습니다. 제로보드좀... [1] 2007.08.10
하정민 표 질문입니다.  
저녁노을 엔터를 안쳤는데 다음줄로 내려오내요. 꼭좀 답.. [2] 2007.08.10
안준 웹프로그램밍 언어 ASP/JSP/PHP/ASP.NET 등 종류별 각각 설명 좀 부탁드리겠습니다. [1] 2007.08.10
보리뚱땡 체크박스로 체그된 값을 삭제하는 방법좀 알려주세요 [1] 2007.08.10
KOF초고수 플래시를 막을수 있는 태그소스 있나요? [2] 2007.08.10
오태진 값전달 이 이상해서 올립니다.. [2] 2007.08.10
카멜롯™ 파일명이 한글일때 이미지가 X 표시(URL Encode)  
이석남 나모에서 (<script language="javascript">)어디에 위치하는지 요 [1] 2007.08.10
연우라니까용!! 나모에서 테이블 안에 배경을 삽입했는데...  
CityBoys-Life 분기별(계절별) 메뉴 다르게 보이게 할수 있나요? [1] 2007.08.10
츄스 엔지오 옆에 메뉴에 회색으로 되있는;; [1] 2007.08.10
똥집놀꺼야 노프레임시 헤더, 푸터 나누고 제로보드 연결시킬 때.. [1] 2007.08.10
박재영 링크에 스타일시트 적용에 관한 질문 [1] 2007.08.10
Marxi iframe 사용시.. [1] 2007.08.10
김소영 제로보드에 오류가 떠요.. php버젼 오류인거 같은데.. [1] 2007.08.10
엄재형 플래쉬 메뉴만들때 질문입니다.. [1] 2007.08.10
눔곰 슬라이딩 메뉴 소스 질문입니다.