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

무거운 쿼리, ajax사용법 채택완료

라젠더 3년 전 조회 2,843

게시판 뷰 페이지 마다 해당 쿼리를 불려오려고하니, 딜레이가 어마어마합니다.

이에 해결 방법이 ajax를 사용하면 된다고 하는데...

 

</p>

<p>                <?php</p>

<p>

$sql = "

  select a.mb_id, b.as_photo, b.mb_nick, b.mb_email, b.mb_homepage, b.as_level

    from g5_point a left join g5_member b on (a.mb_id = b.mb_id)

   where a.po_rel_table = '{$bo_table}'

     and a.po_rel_id = '{$wr_id}'

     and a.po_rel_action = '열람'

   order by a.po_datetime desc

";</p>

<p>$result = sql_query($sql);</p>

<p>for ($i = 0; $row = sql_fetch_array($result); $i++) {

  

                    echo apms_sideview($row['mb_id'], get_text($row['mb_nick']), $row['mb_email'], $row['mb_homepage'], $row['as_level']);

}

    

    ?></p>

<p>

 

해당 소스를 ajax이용하려면 어떻게 하면 되는 건가요? 

 

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

답변 3개

채택된 답변
+20 포인트
3년 전

$sql = "

~

";

echo $sql;

exit;

로 sql 문 추출 후 직접 실행하여 시간을 측정해보고, https://sir.kr/g5_tip/15716

해당 실행시간을 단축시키는 것이 좋습니다. 

 

다음의 SQL문 실행으로, 인덱스를 생성해주면 쿼리속도가 향상될 수도 있습니다.

 

ALTER TABLE `g5_point`
ADD INDEX `po_rel_table_po_id_po_rel_action` (`po_rel_table`, `po_id`, `po_rel_action`);

 

ALTER TABLE `g5_point`
ADD INDEX `po_datetime` (`po_datetime`);

로그인 후 평가할 수 있습니다

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

우선은 인덱스를 적절하게 사용하는지 분석해 봐야겠군요.

그럼에도 시간이 많이 걸린다면

cache 사용을 생각봐야죠.

mysql 버전 올리는 것도 방법입니다.

로그인 후 평가할 수 있습니다

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

저걸  ajax 바꾸다고해도 시간은 비슨합니다 다른 방법을 생각 해보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

라젠더
3년 전
아... 그런가요 답변 감사합니다!
혹시 자바스크립트 등으로 클릭시 나오는 방식도 대처 방법이 안 될까요?
열린이글
3년 전
https://sir.kr/gujik/1290 에 저의 연락처가 있습니다

핸드폰으로 연락주시면 같이 고민 해드릴게요

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

답변을 작성하려면 로그인이 필요합니다.

로그인