무거운 쿼리, ajax사용법
본문
게시판 뷰 페이지 마다 해당 쿼리를 불려오려고하니, 딜레이가 어마어마합니다.
이에 해결 방법이 ajax를 사용하면 된다고 하는데...
<?php
$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
";
$result = sql_query($sql);
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']);
}
?>
해당 소스를 ajax이용하려면 어떻게 하면 되는 건가요?
!-->
답변 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`);
저걸 ajax 바꾸다고해도 시간은 비슨합니다 다른 방법을 생각 해보세요
우선은 인덱스를 적절하게 사용하는지 분석해 봐야겠군요.
그럼에도 시간이 많이 걸린다면
cache 사용을 생각봐야죠.
mysql 버전 올리는 것도 방법입니다.
답변을 작성하시기 전에 로그인 해주세요.