프로그래밍/PHP

PHP - MYSQL과 PHP를 이용한 게시판 속도 업그레이드 두번째

가카리 2014. 6. 22. 17:56
반응형

게시판 업그레이드 첫 번째에서 기존의 오름차순으로 인덱스가 정렬된 것을 내림차순으로 바꿔서 속도를 올려봤습니다.


하지만 이렇게 바꿔도 뒷페이지로 갈수록 느려진다는 단점이 있습니다.


쿼리를 하나로 말고 두 개로 쪼개서 해보는 방법으로 개선해 봅시다.


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



반응형