내 모델에 사람과 주소라는 두 개의 테이블이 있다고 가정 해 봅니다. 한 사람은 O, 하나 이상의 주소를 가질 수 있습니다. 모든 사람을 나열하고 각각 주소가있는 주소를 포함하는 쿼리를 실행하려고합니다.하위 쿼리와 하위 쿼리를 결합하여 중첩 된 개체를 계산합니다.
SELECT
persons.*,
count(addresses.id) AS number_of_addresses
FROM `persons`
LEFT JOIN addresses ON persons.id = addresses.person_id
GROUP BY persons.id
및
SELECT
persons.*,
(SELECT COUNT(*)
FROM addresses
WHERE addresses.person_id = persons.id) AS number_of_addresses
FROM `persons`
그리고 한 성능의 기간에 다른 것보다 더 나은 경우 궁금 해서요 : 여기가 달성해야하는 2 개 쿼리입니다.
이'cube_models' 테이블은 무엇이며 왜 두 번째 쿼리에만 나타 납니까? 두 번째 쿼리는 일반적으로 조인을 사용하는 비슷한 쿼리보다 느리게 실행되는 상관 된 하위 쿼리를 사용합니다. –
나는 첫번째 것이 더 빠를 것이라고 믿는다. 그러나 그들은 매우 유사하다. 두 가지 모두에서 실행 계획을 실행하고 차이점을 확인하십시오. 나는 그것을하는 더 좋은 방법이 있는지 의심 스럽다. – sagi
큐브 모델을 수정했는데, 불량 복사/붙여 넣기 – TrexXx