채택완료
포인트 내역 합계 slow query 코드 개선 조언 요청 건
안녕하세요.
사이트 속도가 느려, 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 포인트
답변을 작성하려면 로그인이 필요합니다.