Es gibt Situationen, in denen eine sehr große Abfrage erforderlich ist, die mehrere Tabellen mit Sub-Select-Anweisungen verknüpft, um die gewünschten Ergebnisse zu erzielen.
Meine Frage ist, sollten wir in Betracht ziehen, mehrere kleinere Abfragen zu verwenden und die logischen Operationen in die Anwendungsschicht zu bringen, indem wir die Datenbank in mehr als einem Aufruf abfragen, oder es ist besser, sie alle auf einmal zu haben?
Betrachten Sie zum Beispiel die folgende Abfrage:
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
Wie geht das am besten?