0
여기서 내가 뭘 잘못하고 있니? 모든 조인 된 테이블이 올바른 세트에 조인되도록 내 FROM으로 하위 쿼리를 사용하려고합니다.subquery from the mysql
SELECT
active_users.username as username,
active_users.computer_name as computer_name,
alert.cnt as alerts
FROM
(SELECT
computer_name,
username
FROM computers
INNER JOIN users
on users.computer_id = computers.computer_id
WHERE computers.account_id = :cw_account_id AND computers.status = :cw_status
) AS active_users
LEFT JOIN
(SELECT
user_id,
count(*) as cnt
from logs
group by user_id
) AS alert
on alert.user_id = active_users.user_id
멋진 ... 내가 물어 있도록 이전뿐만 아니라 저를 도왔다 생각 ... 나는 가정 할 수 이러한 방식으로 그 최적화 프로그램은 하위 조인에서 결합하기 때문에 왼쪽 조인 된 테이블에서 필요한 행을 읽는 중입니까? 그것이 내 목표였습니다. – user756659
그럴 수 있다고 생각하지 않습니다. 하위 쿼리에서'group by'을 사용하면 일반적으로 모든 행이 생성됩니다. –
몇 가지 테스트를했는데 네, 여전히 왼쪽에 조인 된 테이블에서 모든 행을 읽습니다. 어떻게 제거하는 방법에 대한 아이디어? 테이블이 커질수록 확실히 문제가 될 것입니다. 예를 들어, alert.cnt는 50을 반환하지만 로그 테이블에서 전체 7k 행을 읽습니다. – user756659