안녕하세요.
사이트 속도가 느려, slow query 를 분석 중입니다.
아래 query 가 slow query 에 있어 소스 위치를 확인해봤습니다.
Copy
select sum(po_point) as sum_po_point from $g5_point where mb_id = '아이디';
아래 코드를 개선하고자 하는데, 조언 좀 부탁드립니다.
---------- common.lib.php 에서 '포인트 내역 합계' 를 구하는 함수에서 실행되는 쿼리인데요.
Copy
#common.lib.php// 포인트 내역 합계function get_point_sum($mb_id){ global $g5, $config; if($config['cf_point_term'] > 0) { // 소멸포인트가 있으면 내역 추가 $expire_point = get_expire_point($mb_id); if($expire_point > 0) { $mb = get_member($mb_id, 'mb_point'); $content = '포인트 소멸'; $rel_table = '@expire'; $rel_id = $mb_id; $rel_action = 'expire'.'-'.uniqid(''); $point = $expire_point * (-1); $po_mb_point = $mb['mb_point'] + $point; $po_expire_date = G5_TIME_YMD; $po_expired = 1; $sql = " insert into {$g5['point_table']} set mb_id = '$mb_id', po_datetime = '".G5_TIME_YMDHIS."', po_content = '".addslashes($content)."', po_point = '$point', po_use_point = '0', po_mb_point = '$po_mb_point', po_expired = '$po_expired', po_expire_date = '$po_expire_date', po_rel_table = '$rel_table', po_rel_id = '$rel_id', po_rel_action = '$rel_action' "; sql_query($sql); // 포인트를 사용한 경우 포인트 내역에 사용금액 기록 if($point < 0) { insert_use_point($mb_id, $point); } } // 유효기간이 있을 때 기간이 지난 포인트 expired 체크 $sql = " update {$g5['point_table']} set po_expired = '1' where mb_id = '$mb_id' and po_expired <> '1' and po_expire_date <> '9999-12-31' and po_expire_date < '".G5_TIME_YMD."' "; sql_query($sql); } // 포인트합 $sql = " select sum(po_point) as sum_po_point from {$g5['point_table']} where mb_id = '$mb_id' "; $row = sql_fetch($sql); return $row['sum_po_point'];}
답변 2개
채택된 답변
+20 포인트
2016-08-04 (목) 23:09:27
윗 부분은 로그인할때 한번 호출 되는 부분이라 사이트가 느려지는 원인으로 작용할는지 의문입니다
포인트 테이블 레코드수가 너무 많다면 G4의 adm/point_clear.php를 이용해서 포인트 정리를 한번 해주면
레코드 수가 팍 줄어들 것입니다
마르스컴퍼니
2024-04-17 (수) 19:34:30
Copy
$sql = " select po_mb_point as sum_po_point
from {$g5['point_table']}
where mb_id = '{$mb_id}'
order by po_id desc
limit 1 ";
답변을 작성하려면 로그인이 필요합니다.