저는 하위 데이터 표시를 처리하는 가장 효율적이고 효율적인 방법을 찾기 위해 애 쓰고 있습니다. 필자는 PHP와 MySQL을 사용하고 있지만 필자는 이것이 "일반적으로 모든 언어에서"일종의 거래라고 생각합니다.하위 데이터에 대한 루프 내에서 DB 쿼리를 호출하지 않는 방법
내이 생각 만이에 관해서는 주 데이터 (송장)로 하위 데이터 (송장 항목)에 가입
(이 예를 들어 나는 송장과 광고 항목이 나열됩니다)된다 단일 쿼리 내 문제는, 내가 인보이스에 500 개의 광고 항목이 있다고 (현실적인 것은 아니지만 일이 일어난다), MySQL 서버의 전체 인보이스 데이터를 PHP 스크립트에 500 번 보냈을뿐입니다. 한 번만 필요하기 때문에 어리석은 소리가납니다.
두 번째 옵션은 인보이스를 반복하면서 전체 인보이스 데이터를 표시하면서 인보이스의 광고 항목을 선택하는 것입니다. 그리고 이것은 물론 데이터베이스 500 번에 더 많은 시간을 보냅니다.
(주어진 스키마로) 논리적 인 의미로이 데이터를 처리하는 다른 옵션이 있습니까? 나는 내가이 문제에 대해 생각하는 첫 사람이라고 믿을 수 없기 때문에 거의 100 % 확신 할 수 있지만이 주제에 대한 더 많은 정보를 검색하는 올바른 방법을 찾기가 어려울뿐입니다. . 만에 같은 주요 데이터 (송장)로 하위 데이터 (송장 항목)에 가입
오 와우, 나는 PHP에 함께 참여할 생각이 없었습니다. 내 실제 데이터로 벤치 마크를 설정하고 3 가지 방법 중 어느 것이 승리하는지 살펴 보겠습니다. 데이터 크기를 줄이는 압축도 고려하지 않았습니다. –
세 가지 방법으로 무거운 테스트를 한 후 두 가지 쿼리를 실행 한 후 PHP에 합류했습니다. 한 번은 상위 데이터를, 두 번은 모든 하위 데이터를 테스트했습니다. (적어도 내 경우에는) 성능 측면에서 다른 두 가지를 뭉개 버렸다. 각 부모 행에 대한 하위 데이터 호출은 분명히 손실되어 크기가 조정되지 않았으며, 제 상황에서는 쿼리가 모든 추가 조인으로 인덱싱하기가 매우 어려워서 쿼리가 범인이되었습니다. –
쿼리가 최적화 될 수있는 것처럼 보이지만 반환 할 데이터가 많은 경우 중복 데이터 옵션이 가장 빠를 수도 있습니다. –