테스트 사이트 - 개발 중인 베타 버전입니다

[가격인하::580원 팁] 글이 많아 속도 느려질 때 -테이블 나눠쓰기

· 6년 전 · 5095 · 11

게시판글이 10만개 넘어가지 아주 역같이 느려지네요..

 

그래서 테이블을 두개로 나누어 페이징을 변경하여 쓰는 방법이에요,,,ㅋ

 

aaa테이블 1만개

aaa_save테이블 9만개로 나눈뒤에

 

lib/common.lib.php

 

 

if($bo_table=="aaa" || $bo_table=="aaa_save"){

 // 한페이지에 보여줄 행, 현재페이지, 총페이지수, URL
function get_paging($write_pages, $cur_page, $total_page, $url, $add="")
{
    //$url = preg_replace('#&page=[0-9]*(&page=)$#', '$1', $url);
    $url = preg_replace('#&page=[0-9]*#', '', $url) . '&page=';

    $str = '';
    if ($cur_page > 1) {

   $url = "../bbs/board.php?bo_table=aaa&page=";

        $str .= '<a href="'.$url.'1'.$add.'" class="pg_page pg_start">처음</a>'.PHP_EOL;
    }

    $start_page = ( ( (int)( ($cur_page - 1 ) / $write_pages ) ) * $write_pages ) + 1;
    $end_page = $start_page + $write_pages - 1;

    if ($end_page >= $total_page) $end_page = $total_page;

    if ($start_page > 1) 
        
    $url = "/bbs/board.php?bo_table=aaa_save&page=";
    
    $str .= '<a href="'.$url.($start_page-1).$add.'" class="pg_page pg_prev">이전</a>'.PHP_EOL;

    if ($total_page > 1) {
        for ($k=$start_page;$k<=$end_page;$k++) {
            if ($cur_page != $k)
                $str .= '<a href="'.$url.$k.$add.'" class="pg_page">'.$k.'<span class="sound_only">페이지</span></a>'.PHP_EOL;
            else
                $str .= '<span class="sound_only">열린</span><strong class="pg_current">'.$k.'</strong><span class="sound_only">페이지</span>'.PHP_EOL;
        }
    }

    if ($total_page > $end_page) 
$url = "/bbs/board.php?bo_table=aaa&page=";        
    
    $str .= '<a href="'.$url.($end_page+1).$add.'" class="pg_page pg_next">다음</a>'.PHP_EOL;

    if ($cur_page < $total_page) {


$url = "/bbs/board.php?bo_table=aaa_save&page=";

        $str .= '<a href="'.$url.$total_page.$add.'" class="pg_page pg_end">맨끝</a>'.PHP_EOL;
    }

    if ($str)
        return "<nav class=\"pg_wrap\"><span class=\"pg\">{$str}</span></nav>";
    else
        return "";
 

}

 

}else{

원래의 코드는 여기에 꾸겨넣어요~ ㅋ

}

 

 

aaa_save에서 aaa의 맨처음으로 온뒤에 처음이라고 안나오고 "이전"이라고 표시되는거는 다른 고수님이 알려줄거에요~

 

aaa는 500개만

aaa_save는 99500개로 하면

쌩쌩날아다닐거 가타요,,,안해봣지만...ㅋ

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 11개

10만개로 게시판 속도가 느려진다면... 해당 테이블 index를 검토해야 합니다.
아 그런가 보군요, 필드가 250개쯤되다보니 그리고 애초에 설계를 잘못돼서 그렇습니다.
좋은 팁이네요 참고하겠습니다
오~~ 기발한데요

다른방법으로 ...
데이타를 나누는것이 초보에겐 어려우니...

그냥 새로운 테이블을 만들고....
오늘부터는 새로운 테이블에 저장...하는것으로...

그러면...오늘부터 다시 시작하니
매우 빠를거 같은데요....
딱히 많이 건드리지 않고....

하지만 저는 초보라 말만 이럴뿐...방법을 모른답니다.
$list[$i][num]+99500; 해주면
새로 신설한 게시판(aaa) 글번호수도 원래 게시판이랑 똑같아보여요,,ㅋ
검색도 두개 게시판 전체로 검색되면 좋은데..이건 고수들이 만들어주세요

글이 1000개밖에 안되니 팍팍 뜨고 글쓰기도 팍팍 만족합니다~
사용법좀 알려주세요..ㅠㅠ
1.관리자에서 게시판을 복사하세요 aaa ->aaa_save 이렇게요
2.
mysql에서
분리하고자 하는 wr_id 기준으로
delete from aaa where wr_id < 5000
반대로
delete from aaa_save where wr_id > 5000
하여 삭제

3.그리고 위의 팁과 같이 하면 되요

혹시나의 작업실수를 고려하여
aaa -> ccc로 한개 더 복사해놓고 작업하세요
근데 원래 코드를 쑤셔 넣으라는게 무슨 말일까요..

게시판 목록

그누보드5 팁자료실

글쓰기
🐛 버그신고