게시판 업그레이드 첫 번째에서 기존의 오름차순으로 인덱스가 정렬된 것을 내림차순으로 바꿔서 속도를 올려봤습니다.
하지만 이렇게 바꿔도 뒷페이지로 갈수록 느려진다는 단점이 있습니다.
쿼리를 하나로 말고 두 개로 쪼개서 해보는 방법으로 개선해 봅시다.
1. 100만개 레코드 중에서 50만 번째 레코드를 찾는다.
2. 찾은 레코드 번호부터 검색하여 10개의 글 목록을 가져온다.
이를 쿼리로 작성해보면 다음과 같습니다.
SELECT thread FROM threadboard ORDER BY thread DESC LIMIT 500000, 1;
위 쿼리의 값을 $thread 변수에 저장하면
SELECT * FROM threadboard WHERE thread <= $thread ORDER BY thread DESC LIMIT 10;
위를 통해서 10개의 글목록을 가져옵니다.
만약 기존의 list.php파일에서
$query = "SELECT * FROM $board ORDER BY thread LIMIT $no,$page_size";
쿼리문을 다음과 같이 두단계로 쪼개면
//1. 글 목록의 첫 번째 글 찾기
$query = "SELECT thread FROM $board ORDER BY thread ASC LIMIT $no, 1";
$result = mysql_query($query, $conn);
$row = mysql_fetch_row($result);
$start_thread = $row[0];
//2. 찾은 thread 값부터 10개의 글을 가져옴.
$query = "SELECT * FROM $board WHERE thread >= '$start_thread' ORDER BY thread ASC LIMIT 10";
$result = mysql_query($query, $conn);
실행화면
뒤의 게시물을 보아도 속도가 20초가 걸리던 것이 1.54초로 줄어듭니다.
소스 출처 : http://brown.ezphp.net/85
'프로그래밍 > PHP' 카테고리의 다른 글
PHP - HTML를 이용한 공격 방지 (0) | 2014.06.25 |
---|---|
PHP - PHP에서 에러 메시지 처리 방법 (0) | 2014.06.23 |
PHP - MYSQL과 PHP를 이용한 게시판 속도 업그레이드 (0) | 2014.06.22 |
PHP - MYSQL과 PHP를 이용한 계층형 게시판 만들기 (6) | 2014.06.10 |
PHP - MYSQL과 PHP를 이용한 간단한 게시판 만들기 (55) | 2014.06.08 |
PHP - MYSQL과 PHP를 이용한 방명록 만들기 (0) | 2014.06.05 |
PHP - mysql_error 함수 (0) | 2014.06.05 |
[php] get방식을 이용한 변수 전달 (0) | 2014.06.05 |