이 SQL 쿼리를 작성하여 초대 테이블에없는 사용자의 친구를 얻습니다. 그러나 작동합니다. 그러나 하위 쿼리는 성능을 높이는 사람이고 나는별로 좋지 않습니다. 조인, 그냥 조인이 쿼리를 수정하기위한 모든 도움은 정말 감사하겠습니다. 여기 SQL 조인 및 하위 쿼리, SQL에 대한 하위 쿼리 조인
는 테이블 구조 어떤 도움이 정말이에 대한
LEFT JOIN
을 사용할 수 있습니다
이 SQL 쿼리를 작성하여 초대 테이블에없는 사용자의 친구를 얻습니다. 그러나 작동합니다. 그러나 하위 쿼리는 성능을 높이는 사람이고 나는별로 좋지 않습니다. 조인, 그냥 조인이 쿼리를 수정하기위한 모든 도움은 정말 감사하겠습니다. 여기 SQL 조인 및 하위 쿼리, SQL에 대한 하위 쿼리 조인
는 테이블 구조 어떤 도움이 정말이에 대한
LEFT JOIN
을 사용할 수 있습니다
friends
id first_name
friends_users
id friend_id user_id
friends_invitations
id friend_id user_id
,
SQL 쿼리 여기
SELECT friend.id,
friend.first_name
FROM friends AS friend
INNER JOIN friends_users AS friendsUser
ON (friend.id = friendsUser.friend_id
AND friend.id NOT IN (SELECT friend_id
FROM friends_invitations
WHERE friends_invitations.user_id = 1))
ORDER BY friendsUser.id ASC
입니다
SELECT friend.id,
friend.first_name
FROM friends AS friend
INNER JOIN friends_users AS friendsUser
ON friend.id = friendsUser.friend_id
LEFT JOIN friends_invitations
ON friend.id = friends_invitations.friend_id AND
friends_invitations.user_id = 1
WHERE friends_invitations.friend_id IS NULL
ORDER BY friendsUser.id ASC
하위 쿼리가 반드시 성능을 높일 수있는 것은 아니지만 쿼리에 성능 문제가 있습니까? (SQL Server 용) NOT IN
, LEFT JOIN
및 NOT EXISTS
의 차이점을 설명
SELECT friend.id,
friend.first_name
FROM friends AS friend
INNER JOIN friends_users AS friendsUser
ON friend.id = friendsUser.friend_id
WHERE NOT EXISTS (SELECT 1 FROM friends_invitations
WHERE friends_invitations.user_id = 1
AND friend_id = friend.id)
ORDER BY friendsUser.id ASC
Here is a link : 어쨌든, 대부분의 시간 조회를 할 수있는 가장 빠른 방법은 NOT EXISTS
을 사용하는 것입니다. 따라서이 다양한 옵션을 테스트하고 테이블에 적합한 옵션을 선택하십시오.
성능에 대한 질문이 있으면 사용중인 RDBMS에도 태그를 추가해야합니다 (예 : Oracle, SQL Server, MySQL). SQL은 선언적입니다. 최적화 방법은 사용중인 제품에 따라 다릅니다. –
JOIN을 반드시 하위 선택으로 다시 쓸 수있는 것은 아닙니다. 그리고 성능을 향상시킬 것이라고 생각하면 괜찮은 Optimizer를 사용하는 DBMS가 자동으로이를 수행합니다. –
@a_horse_with_no_name MySQL을 사용하고 있습니까? – Sedz