İstenilen sonuçları üretmek için alt tablo deyimleriyle birlikte birkaç tabloyu birleştirmek için gerçekten büyük bir sorguya ihtiyaç duyan durumlar vardır.
Benim sorum, birden çok daha küçük sorgu kullanmayı düşünmeliyiz ve mantıksal işlemleri DB'yi birden fazla çağrıda sorgulayarak uygulama katmanına getirmeli miyiz, yoksa hepsini bir arada tutmak daha mı iyi?
Örneğin, aşağıdaki sorguyu düşünün:
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
Bunu yapmanın en iyi yolu nedir?