원하는 결과를 얻기 위해 여러 테이블을 sub select 문과 함께 여러 테이블을 조인해야하는 상황이 있습니다.
내 질문은, 여러 개의 작은 쿼리를 사용하고 DB를 두 번 이상의 호출로 쿼리하여 논리적 작업을 응용 프로그램 계층으로 가져와야합니까?
예를 들어 다음 쿼리를 고려하십시오.
SELECT *
FROM `users`
WHERE `user_id` IN (SELECT f2.`friend_user_id`
FROM `friends` AS f1
INNER JOIN `friends` AS f2
ON f1.`friend_user_id` = f2.`user_id`
WHERE f2.`is_page` = 0
AND f1.`user_id` = "%1$d"
AND f2.`friend_user_id` != "%1$d"
AND f2.`friend_user_id` NOT IN (SELECT `friend_user_id`
FROM `friends`
WHERE `user_id` = "%1$d"))
AND `user_id` NOT IN (SELECT `user_id`
FROM `friend_requests`
WHERE `friend_user_id` = "%1$d")
AND `user_image` IS NOT NULL
ORDER BY RAND()
LIMIT %2$d
가장 좋은 방법은 무엇입니까?