PHP 최적화 튜 토리 얼 의 내장 문제 해결
예 를 들 어 주문 목록 을 조회 하고 주문 상세 상품,수량 데 이 터 를 보 여 줍 니 다.
사고방식 0:전통 적 인 방법
a.주문서 목록 조회
b.주문 내 역 옮 겨 다 니 기
$orderList = select * from order where xx;
foreach($orderList as $orderItem) {
$orderItem->detailList = select * from order_detail where order_id = $orderItem->id;
}
분석:SQL 조회 횟수 는 N+1(N 은 주문 개수)로 데이터 베 이 스 를 자주 요청 하여 효율 에 영향 을 줍 니 다.최적화:잦 은 요청 데이터베이스 감소
사고방식 1:
a.주문서 목록 을 조회 한 후 in 을 이용 하여 모든 주문서 의 상세 한 상황 을 찾 아 냅 니 다.
b.통과(주문서 id=>주문서 상세 표 orderid)일치 하 는 데 이 터 를 옮 겨 다 니 기
$orderList = select * from order where xx;
$orderId = array_pluck($orderList, 'id'); // Laravel
$orderDetailList = select * from order_detail where order_id IN $orderId;
foreach($orderList as $orderItem) {
$detailListTemp = [];
foreach($orderDetailList as $orderDetailItem) {
if ($orderItem->id == $orderDetailItem->order_id) {
$detailListTemp[] = $orderDetailItem;
}
}
$orderItem->detailList = $detailListTemp;
}
분석:조 회 를 낮 춘 후 2 층 을 옮 겨 다 니 며 복잡 도가 높 고 수량 이 너무 많 으 면 메모리 가 넘 치기 쉽다.최적화:복잡 도 감소
사고방식 2:
a.주문서 목록 을 조회 한 후 in 을 이용 하여 모든 주문서 의 상세 한 상황 을 찾 아 냅 니 다.
b.주문 상세 목록 은 주문 ID 를 색인 으로 바 꾸 고 isset 으로 주문 의 상세 한 상황 과 일치 합 니 다.
$orderList = select * from order where xx;
$orderId = array_pluck($orderList, 'id'); // Laravel
$orderDetailList = select * from order_detail where order_id IN $orderId;
// ID 【 1】
$orderDetailList = arrayGroup($orderDetailList, 'order_id');
// : ID 【 2: , array_column】
// $orderList = array_column($orderDetailList, null, 'order_id');
foreach($orderList as $orderItem) {
$orderItem->detailList = $orderDetailList[$orderItem->id] ?? [];
}
// KEY
function arrayGroup($list, $key) {
$newList = [];
foreach ($list as $item) {
$newList[$item[$key]][] = $item;
}
return $newList;
}
총결산PHP 최적화 튜 토리 얼 의 내장 문제 해결 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 PHP 해결 내장 문제 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.