PHP+MySQL 은 한 동안 매일 데이터 통계 최적화 작업 인 스 턴 스 를 실현 합 니 다.

본 논문 의 사례 는 PHP+MySQL 이 한 동안 매일 데이터 통계 에 대한 최적화 작업 을 실현 하 는 것 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
인터넷 프로젝트 에서 프로젝트 에 대한 데이터 분석 이 없어 서 는 안 된다.보통 한 동안 매일 데이터 총계 변화 추세 조정 마 케 팅 전략 을 통계 한다.다음은 다음 과 같은 사례 를 살 펴 보 겠 습 니 다.
케이스
전자상거래 플랫폼 에 서 는 보통 주문서 가 있 고 모든 주문 정 보 를 기록한다.현재 우 리 는 한 달 동안 매일 주문 수량 과 판매 금액 데 이 터 를 통계 하여 다음 과 같은 통계 도 를 그 려 데이터 분석 을 해 야 한다.

주문서 데이터 구 조 는 다음 과 같다.
order_id
order_sn
total_price
enterdate
25396
A4E610E250C2D378D7EC94179E14617F
2306.00
2017-04-01 17:23:26
25397
EAD217C0533455EECDDE39659ABCDAE9
17.90
2017-04-01 22:15:18
25398
032E6941DAD44F29651B53C41F6B48A0
163.03
2017-04-02 07:24:36
이때 모 월 의 각 천하 단 수 를 조회 할 때 총 금액 은 어떻게 해 야 합 니까?
일반적인 방법
먼저 가장 생각 하기 쉬 운 방법 은 phop 함수cal_days_in_month()를 이용 하여 그 달 일 수 를 얻 은 다음 에 그 달 모든 일의 배열 을 구성 한 다음 에 순환 에서 매일 총 수 를 조회 하여 새로운 배열 을 구성 합 니 다.
코드 는 다음 과 같 습 니 다:

$month = '04';
$year = '2017';
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);   //      
//       
$days_arr = array();
for($i=1;$i<=$max_day;$i++){
  array_push($days_arr, $i);
}
$return = array();
//  
foreach ($days_arr as $val){
  $min = $year.'-'.$month.'-'.$val.' 00:00:00';
  $max = $year.'-'.$month.'-'.$val.' 23:59:59';
  $sql = "select count(*) as total_num,sum(`total_price`) as amount from `orders` where `enterdate` >= {$min} and `enterdate` <= {$max}";
  $return[] = mysqli_query($sql);
}
return $return;

이 sql 은 간단 하지만 매번 30 번 의 조회 가 필요 합 니 다.응답 시간 을 심각하게 늦 추 십시오.
최적화 하 다.
어떻게 sql 을 사용 하여 각 일의 수량 총 계 를 직접 조회 합 니까?
이 때 my sql 의date_format함 수 를 이용 하여 하위 조회 에서 해당 달의 모든 주문 서 를 먼저 찾 고 entertate 를 date 로 사용 해 야 합 니 다.format 함 수 를 일 로 변환 한 후 일group by로 나 누 어 집계 합 니 다.코드 는 다음 과 같 습 니 다:

$month = '04';
$year = '2017';
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);   //      
$min = $year.'-'.$month.'-01 00:00:00';
$max = $year.'-'.$month.'-'.$max_day.' 23:59:59';
$sql = "select t.enterdate,count(*) as total_num,sum(t.total_price) as amount (select date_format(enterdate,'%e') as enterdate,total_price from orders where enterdate between {$min} and {$max}) t group by t.enterdate order by t.enterdate";
$return = mysqli_query($sql);

이렇게 30 회 조 회 를 1 회로 줄 이면 응답 시간 이 크게 높아진다.
주의:
1.해당 달의 모든 데 이 터 를 조회 해 야 하기 때문에 데이터 양 이 너무 많 을 때 본 방법 을 사용 해 서 는 안 된다.
2.당일 에 데이터 가 없어 서 데이터 가 부족 하지 않도록 조회 한 후에 수요 에 따라 데 이 터 를 처리 해 야 한다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기